其中,wc=0.5π,那么,就可分别用矩形窗、汉宁窗来设计该滤波器,且取N=2l、3l。
2.1 MATLAB的程序设计
下面是基于MATIAB来设计FIR数字滤波器的程序代码:
%1)矩形窗N=2l
N1=21;a1=(N1—1)/2;wc=pi/2;
n1=[0:l:(Nl—1)];
m1=n1一al+eps;%避免被零除
hdl=sin (wc*m1)./(pi*m1);
%加矩形窗
[h1,wl]=freqz(hdl,1);
subplot(2,2,1);plot(wl/pi,20*log10(abs(h1)/abs(hl(1))));axis([0,1,-50,1O]);
xlabel('频率');ylabel('幅频响应');
title('FIR加矩形窗函数的幅频特性N=21');
%2)汉宁窗N=21
w_hanl=(hanning(N1))';
hl=hdl.*w_hanl;%加汉宁窗
[hhl,w1]=freqz(hl,1);
subplot(2,2,2);plot(wl/pi,20*log10(abs(hhl)/abs(hhl(1))));axis([0,l,一80,lO]);
xlabel('频率');ylabel('幅频响应');
title('FIR加汉宁窗函数的幅频特性N=21');
%3)矩形窗N=31
N2=3 1;a2=(N2-1)/2;wc=pi/2;
n2=[0:1:(N2-1)];
m2=n2一a2+eps;%避免被零除
hd2=sin(wc*m2)./(pi*m2);
%加矩形窗
[h2,w2]=freqz(hd2,1);
subplot(2,2,3);plot(w2/pi,20*log 1O(abs(h2)/abs(h2(1))));axis([0,1,一50,10]);
xlabel('频率');ylabel('幅频响应');
title('FIR加矩形窗函数的幅频特性N=31');
%4)汉宁窗N=31
w_han2=(hanning(N2))';
h2=hd2.*w_han2;%加汉宁窗
[hh2,w2]=freqz(h2,1);
subplot(2,2,4);plot(w2/pi,20*logl0(abs(hh2)/abs(hh2(1))));axis([0,1,-80,10]);
xlabel('频率');ylabel('幅频响应');
title('FIR加汉宁窗函数的幅频特性N=31');
2.2 MATLAB仿真结果分析