Advertisement
gollub

DS Vjezba 4 zadatak 4.3

May 26th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.00 KB | None | 0 0
  1. clear all
  2. clc
  3.  
  4. %pod a) pomocu Parks-McClellanovog algoritma FIR NF filtar
  5.  
  6. %Ucestanost odabiranja u sistemu
  7. fsr = 11200;
  8. %Specifikacija NF filtra
  9. fp = 3500;
  10. fs = 4000;
  11. ap = 1;
  12. as = 40;
  13. %Projektovanje NF filtra
  14. f = [fp fs];
  15. a = [1 0];
  16. dev = [(10^(ap/20)-1)/(10^(ap/20)+1) 10^(-as/20)];%odredjivanje dozvoljenih odstupanja za svaki opseg
  17. [n, fo, ao, w] = firpmord (f, a, dev, fsr);
  18. b_nf = firpm (n, fo, ao, w);
  19.  
  20. %pod b) pomocu Parks-McClellanovog algoritma FIR VF filtar
  21.  
  22. %Specifikacija VF filtra
  23. fp = 2500;
  24. fs = 1500;
  25. ap = 1;
  26. as = 40;
  27. %Projektovanje VF filtra
  28. f = [fs fp];
  29. a = [0 1];
  30. dev = [10^(-as/20) (10^(ap/20)-1)/(10^(ap/20)+1)];%odredjivanje dozvoljenih odstupanja za svaki opseg
  31. [n, fo, ao, w] = firpmord (f, a, dev, fsr);
  32. b_vf = firpm (n, fo, ao, w);
  33.  
  34. %pod c) pomocu Parks-McClellanovog algoritma FIR PO filtar
  35.  
  36. %Specifikacija PO filtra
  37. fp1 = 1500;
  38. fp2 = 2500;
  39. fs1 = 1200;
  40. fs2 = 2800;
  41. ap = 1;
  42. as1 = 40;
  43. as2 = 40;
  44. %Projektovanje PO filtra
  45. f = [fs1 fp1 fp2 fs2];
  46. a = [0 1 0];
  47. %odredjivanje dozvoljenih odstupanja za svaki opseg
  48. dev = [10^(-as1/20) (10^(ap/20)-1)/(10^(ap/20)+1) 10^(-as2/20)];
  49. [n, fo, ao, w] = firpmord (f, a, dev, fsr);
  50. b_po = firpm (n, fo, ao, w);
  51.  
  52. %pod d) pomocu Parks-McClellanovog algoritma FIR NO filtar
  53.  
  54. %Specifikacija NO filtra
  55. fp1 = 3500;
  56. fp2 = 4500;
  57. fs1 = 3800;
  58. fs2 = 4100;
  59. ap1 = 1;
  60. ap2 = 1;
  61. as = 40;
  62. %Projektovanje NO filtra
  63. f = [fp1 fs1 fs2 fp2];
  64. a = [1 0 1];
  65. %odredjivanje dozvoljenih odstupanja za svaki opseg
  66. dev = [(10^(ap1/20)-1)/(10^(ap1/20)+1) 10^(-as/20) (10^(ap2/20)-1)/(10^(ap2/20)+1)];
  67. [n, fo, ao, w] = firpmord (f, a, dev, fsr);
  68. b_no = firpm (n, fo, ao, w);
  69.  
  70. %Odredjivanje amplitudskih karakteristika
  71. N_fft = 1024;
  72. B_nf = fft (b_nf, N_fft);
  73. B_vf = fft (b_vf, N_fft);
  74. B_po = fft (b_po, N_fft);
  75. B_no = fft (b_no, N_fft);
  76. Ba_nf = abs(B_nf(1:N_fft/2));
  77. Ba_vf = abs(B_vf(1:N_fft/2));
  78. Ba_po = abs(B_po(1:N_fft/2));
  79. Ba_no = abs(B_no(1:N_fft/2));
  80. Bb_nf = angle(B_nf(1:N_fft/2));
  81. Bb_vf = angle(B_vf(1:N_fft/2));
  82. Bb_po = angle(B_po(1:N_fft/2));
  83. Bb_no = angle(B_no(1:N_fft/2));
  84.  
  85. %crtanje amplitudskih karakteristika na jednom grafiku
  86. n = 0:N_fft/2-1;
  87. w = n*fsr/(2*(N_fft/2-1));
  88.  
  89. % pod a) NF
  90.  
  91. figure;
  92. subplot (2, 1, 1); plot (w, Ba_nf); axis ([0 fsr/2 0 1.2]);
  93. title ('Amplitudska k-ka NF filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  94. subplot (2, 1, 2); plot (w, Bb_nf);
  95. title ('Fazna k-ka NF filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  96.  
  97. % pod b) VF
  98.  
  99. figure;
  100. subplot (2, 1, 1); plot (w, Ba_vf); axis ([0 fsr/2 0 1.2]);
  101. title ('Amplitudska k-ka VF filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  102. subplot (2, 1, 2); plot (w, Bb_vf);
  103. title ('Fazna k-ka VF filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  104.  
  105.  
  106. % pod c) PO
  107.  
  108. figure;
  109. subplot (2, 1, 1); plot (w, Ba_po); axis ([0 fsr/2 0 1.2]);
  110. title ('Amplitudska k-ka PO filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  111. subplot (2, 1, 2); plot (w, Bb_po);
  112. title ('Fazna k-ka PO filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  113.  
  114. % pod d) NO
  115.  
  116. figure;
  117. subplot (2, 1, 1); plot (w, Ba_no); axis ([0 fsr/2 0 1.2]);
  118. title ('Amplitudska k-ka NO filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  119. subplot (2, 1, 2); plot (w, Bb_no);
  120. title ('Fazna k-ka NO filtra projektovanog koriscenjem Parks-McClellan algoritma', 'FontSize', 14);
  121.  
  122.  
  123. %ulaz
  124.  
  125. x = cos(2*pi*1000/11200*n) + cos(2*pi*3000/11200*n) + cos(2*pi*5000/11200*n);
  126.  
  127. figure;
  128.  
  129. subplot (3, 2, 1),stem (n, x),title('Pobuda');
  130.  
  131. y1 = conv(x,b_nf);
  132.  
  133. subplot (3, 2, 2),stem (0:length(y1)-1, y1),title('Odziv,kroz NF filtar');
  134.  
  135. y2 = conv(x,b_vf);
  136.  
  137. subplot (3, 2, 3),stem (0:length(y2)-1, y2),title('Odziv,kroz VF filtar');
  138.  
  139. y3 = conv(x,b_po);
  140.  
  141. subplot (3, 2, 4),stem (0:length(y3)-1, y3),title('Odziv,kroz PO filtar');
  142.  
  143. y4 = conv(x,b_no);
  144.  
  145. subplot (3, 2, 5),stem (0:length(y4)-1, y4),title('Odziv,kroz NO filtar');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement