MATLAB滤波器

来源:互联网 发布:网络布线施工 编辑:程序博客网 时间:2024/04/30 03:02

 

Code:
  1. %窗函数法设计FIR低通滤波器  
  2. clear;close all  
  3. N=45;wc=pi/4;  
  4. n=0:N-1;r=(N-1)/2;  
  5. hdn=sin(wc*(n-r))/pi./(n-r);                %计算理想低通单位脉冲响应   
  6. if rem(N,2)~=0 hdn(r+1)=wc/pi; end         %N为奇数时,处理n=r点的0/0型  
  7. wn1=boxcar(N);                          %矩形窗  
  8. hn1=hdn.*wn1';                          %加窗  
  9. %以上两条语句可代以fir函数:hn1=fir1(N-1,wc/pi,boxcar(N));  
  10. wn2=hamming(N);                         % hamming窗  
  11. hn2=hdn.*wn2';                          %加窗  
  12. wn3=triang(N);                          % triang窗  
  13. hn3=hdn.*wn3';                          %加窗  
  14. wn4=hanning(N);                         % hanning(窗  
  15. hn4=hdn.*wn4';                          %加窗  
  16. wn5=blackman(N);                        % blackman窗  
  17. hn5=hdn.*wn5';                          %加窗  
  18. wn6=kaiser(N,5.658);                    % kaiser窗  
  19. hn6=hdn.*wn6';                          %加窗  
  20. %以上两条语句可代以fir函数:hn2=fir1(N-1,wc/pi, hamming (N));k=3  
  21. [hw1,w]=freqz(hn1,1);  
  22. [hw2,w]=freqz(hn2,1);  
  23. [hw3,w]=freqz(hn3,1);  
  24. [hw4,w]=freqz(hn4,1);  
  25. [hw5,w]=freqz(hn5,1);  
  26. [hw6,w]=freqz(hn6,1);  
  27. %显示最大化  
  28. set(gcf,'outerposition',get(0,'screensize'));  
  29. %显示窗函数  
  30. subplot(4,3,1);stem(n,hn1,'.');xlabel('矩形窗系数序列');ylabel('h(n1)');  
  31. subplot(4,3,2);stem(n,hn2,'.');xlabel('海明窗系数序列');ylabel('h(n2)');  
  32. subplot(4,3,3);stem(n,hn3,'.');xlabel('三角窗系数序列');ylabel('h(n1)');  
  33. subplot(4,3,4);stem(n,hn4,'.');xlabel('汉宁窗系数序列');ylabel('h(n2)');  
  34. subplot(4,3,5);stem(n,hn5,'.');xlabel('布拉克曼窗系数序列');ylabel('h(n1)');  
  35. subplot(4,3,6);stem(n,hn6,'.');xlabel('凯泽窗系数序列');ylabel('h(n2)');  
  36. %频域相应  
  37. %subplot(4,3,7);plot(w,abs(hw1),w,abs(hw2),':');xlabel('幅频特性');ylabel('│H(w1)│');     
  38. %legend('矩形窗','海明窗')  
  39. %单位为db的频域相应  
  40. subplot(4,3,7);  
  41. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw1)),':');xlabel('幅频特性');ylabel('dB');  
  42. legend('矩形窗','矩形窗')  
  43. subplot(4,3,8);  
  44. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw2)),':');xlabel('幅频特性');ylabel('dB');  
  45. legend('矩形窗','海明窗')  
  46. subplot(4,3,9);  
  47. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw3)),':');xlabel('幅频特性');ylabel('dB');  
  48. legend('矩形窗','三角窗')  
  49. subplot(4,3,10);  
  50. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw4)),':');xlabel('幅频特性');ylabel('dB');  
  51. legend('矩形窗','汉宁窗')  
  52. subplot(4,3,11);  
  53. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw5)),':');xlabel('幅频特性');ylabel('dB');  
  54. legend('矩形窗','布拉克曼窗')  
  55. subplot(4,3,12);  
  56. plot(w,20*log10(abs(hw1)),w,20*log10(abs(hw6)),':');xlabel('幅频特性');ylabel('dB');  
  57. legend('矩形窗','凯泽窗')  


Code:
  1. clear;close all  
  2. set(gcf,'outerposition',get(0,'screensize')); %最大化显示  
  3. N=21;   %阶数  
  4. b=fir1(N,0.25,'low',triang(N+1));n=0:N;            %设计FIR数字滤波器系数  
  5. subplot(3,2,1);stem(n,b,'.');  
  6. legend('三角窗')  
  7. xlabel('n'); ylabel('h(n)');  
  8. axis([0,21,-0.4,0.5]),line([0,21],[0,0])  
  9. [h,w]=freqz(b,1,256);  
  10. subplot(3,2,2);plot(w/pi,20*log10(abs(h)));  
  11. legend('三角窗');grid  
  12. axis([0,1,-80,0]); xlabel ('w/pi'); ylabel ('幅度(dB)');  
  13.   
  14. b=fir1(N,0.25,'low',hanning(N+1));n=0:N;            %设计FIR数字滤波器系数  
  15. subplot(3,2,3);stem(n,b,'.');  
  16. legend('汉宁窗')  
  17. xlabel('n'); ylabel('h(n)');  
  18. axis([0,21,-0.4,0.5]),line([0,21],[0,0])  
  19. [h,w]=freqz(b,1,256);  
  20. subplot(3,2,4);plot(w/pi,20*log10(abs(h)));  
  21. legend('汉宁窗');grid  
  22. axis([0,1,-80,0]); xlabel ('w/pi'); ylabel ('幅度(dB)');  
  23.   
  24. b=fir1(N,0.25,'low',blackman(N+1));n=0:N;            %设计FIR数字滤波器系数  
  25. subplot(3,2,5);stem(n,b,'.');  
  26. legend('布拉克曼窗')  
  27. xlabel('n'); ylabel('h(n)');  
  28. axis([0,21,-0.4,0.5]),line([0,21],[0,0])  
  29. [h,w]=freqz(b,1,256);  
  30. subplot(3,2,6);plot(w/pi,20*log10(abs(h)));  
  31. legend('布拉克曼窗');grid  
  32. axis([0,1,-80,0]); xlabel ('w/pi'); ylabel ('幅度(dB)');  

 

原创粉丝点击