例3 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:Ωp1=0.45pi,Ωp2=0.65pi,通带峰值起伏:δ1<=1[dB]。阻带边缘频率:Ωs1=0.3pi,Ωs2=0.8pi,最小阻带衰减:δ2>=40[dB] 。方法一:窗函数法 程序如下: [n,wn,bta,ftype]=kaiserord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);%用kaiserord函数估计出滤波器阶数n和beta参数 h1=fir1(n,wn,ftype,kaiser(n+1,bta),'noscale'); [hh1,w1]=freqz(h1,1,256); figure(1) subplot(2,1,1) plot(w1/pi,20*log10(abs(hh1))) grid xlabel('归一化频率w');ylabel('幅度/db'); subplot(2,1,2) plot(w1/pi,angle(hh1)) grid xlabel('归一化频率w');ylabel('相位/rad'); 波形如下:
滤波器系数为:
h1 = Columns 1 through 8 0.0041 0.0055 -0.0091 -0.0018 -0.0056 -0.0000 0.0391 -0.0152 Columns 9 through 16 -0.0381 0.0077 -0.0293 0.0940 0.0907 -0.2630 -0.0517 0.3500 Columns 17 through 24 -0.0517 -0.2630 0.0907 0.0940 -0.0293 0.0077 -0.0381 -0.0152 Columns 25 through 31 0.0391 -0.0000 -0.0056 -0.0018 -0.0091 0.0055 0.0041
如果直接用freqz(h1,1,256),得幅频特性和相频特性曲线: |