Advertisement
gollub

DS Vjezba 4 zadatak 4.2 pod c)

May 29th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.08 KB | None | 0 0
  1. %Specifikacija PO filtra
  2. fp1 = 1700;
  3. fp2 = 3500;
  4. fs1 = 1200;
  5. fs2 = 4000;
  6. ap = 1;
  7. as = 40;
  8. %korak 1: odredjivanje dw, wc, delta_s i delta_p
  9. df = min (fp1-fs1, fs2-fp2);
  10. fc1 = fp1+df/2;
  11. fc2 = fp2-df/2;
  12. delta_s = 10^(-0.05*as);
  13. delta_p = (10^(0.05*ap)-1)/(10^(0.05*ap)+1);
  14. %korak 2: odredjivanje delta
  15. delta = min (delta_s, delta_p);
  16. if delta ~= delta_s
  17.     delta_s = -20*log10(delta);
  18. end
  19. %korak 3: odredjivanje beta
  20. beta = 0;
  21. if (as >= 21 & as <= 50)
  22.     beta = 0.5842*(as-21)^0.4+0.07886*(as-21);
  23. end
  24. if as > 50
  25.     beta = 0.1102*(as-8.7);
  26. end
  27. %korak 4: odredjivanje M
  28. D = 0.9222;
  29. if as > 21
  30.     D = (as-7.95)/14.36;
  31. end
  32. M = ceil (fo*D/df+1);
  33. %ukoliko je M paran dodaj jedan da bi smo dobili neparan broj
  34. %ovo je neophodno da bi projektovani filtar imao celobrojno kasnjenje
  35. if mod(M, 2) == 0
  36.     M = M + 1;
  37. end;
  38. %korak 5: generisanje odbiraka kajzerovog prozora duzine M
  39. wk = kaiser (M, beta);
  40. %korak 6: projektovanje FIR filtra
  41. N = M-1; %potrebni red filtra
  42. Fn = [fc1/(fo/2) fc2/(fo/2)]; %specifikacija nepropusnog opsega
  43. b = fir1 (N, Fn, wk);
  44. %racunanje spektra u 1024 tacke koriscenjem FFT
  45. N_fft = 1024;
  46. B = fft (b, N_fft);
  47. %odredjivanje amplitudske karakteristike
  48. Ba = abs(B(1:N_fft/2));
  49. F = angle(B(1:N_fft/2));
  50. %crtanje amplitudskih karakteristika na jednom grafiku
  51. n = 0:N_fft/2-1;
  52. f = n*(fo/2)/(N_fft/2-1);
  53. subplot (3, 1, 1); plot (f, Ba); title ('Amplitudska karakteristika PO filtra projektovanog koriscenjem Kajzerovog prozora - linearna osa');
  54. subplot (3, 1, 2); plot (f, 20*log10(Ba)); title ('Amplitudska karakteristika PO filtra projektovanog koriscenjem Kajzerovog prozora - logaritamska osa');
  55. subplot (3, 1, 3); plot (f, F); title ('Fazna karakteristika PO filtra projektovanog koriscenjem Kajzerovog prozora');
  56. xlim([0 pi])
  57.  
  58. %PREKO FURIJEA
  59.  
  60. n = 0:1023;
  61. x = cos(2*pi*1000/fo*n) + cos(2*pi*3000/fo*n)+ cos(2*pi*5000/fo*n);
  62.  
  63. figure
  64. subplot(2, 1, 1), plot(n, x), title ('Pobuda x', 'FontSize', 14);
  65. xlim([0 100]);
  66.  
  67. X = fft(x, N_fft)
  68.  
  69. y = ifft(X.*B);
  70.  
  71. subplot(2, 1, 2), plot(1:numel(y), y), title ('Odziv na PO ', 'FontSize', 14), xlim([0 100]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement