FIR数字滤波器的设计
一、实验目的
(1) 掌握用窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的MATLAB编程。
(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性。
(3) 了解各种不同窗函数对滤波器性能的影响。
二、主要仪器设备
硬件:微型计算机
软件:Matlab
三、实验内容
1、N=45,计算并画出矩形窗、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自特点。
程序代码:
N=45;
w1=boxcar(N);w2=hamming(N);w3=blackman(N);
[h,w]=freqz(w1,N); figure(1);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-80,10]);
grid on;
xlabel('归一化频率/π');ylabel('幅度/dB');
title('20610815李卫 矩形窗');
figure(2);
[h,w]=freqz(w2,N);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-80,10]);
grid on;
xlabel('归一化频率/π');ylabel('幅度/dB');
title('汉明窗');
figure(3);
[h,w]=freqz(w3,N);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-150,10]);
grid on;
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗');
结果显示:
实验分析:
矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克曼窗函数则更甚之。 矩形窗设计的滤波器过渡带最窄,但是阻带最小衰减也最差; 布莱克曼窗设计的滤波器阻带衰减最好,过渡带最宽,约为矩形窗设计的的三倍。 汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。
2、N=15,带通滤波器的两个通带边界分别为。用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相频特性的变化,注意长度N变换的影响。
程序代码:
N=15;w1=0.3;w2=0.5;
w=hanning(N);
n=0:N-1;alfa=(N-1)/2;
h=fir1(N-1,[w1 w2],w);
[h1,w3]=freqz(h,1);
figure(1);
subplot(2,1,1);
plot(w3/pi,20*log10(abs(h1)));grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
subplot(2,1,2);
plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);
xlabel('归一化频率/π');
ylabel('角度/rad');
N=45;w=hanning(N);
n=0:N-1;alfa=(N-1)/2;
h=fir1(N-1,[w1 w2],w);
[h1,w3]=freqz(h,1);
figure(2);
subplot(2,1,1);
plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
subplot(2,1,2);plot(w3/pi,angle(h1));grid on;
axis([0,1,-4,4]);
xlabel('归一化频率/π');
ylabel('角度/rad');
结果显示:
实验分析:
观察图像,当N增大,3db带宽和20db带宽减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通带较平缓,波动小,阻带衰减大。相频特性曲线显示其相位随频率变化也变大。
3、分别改用矩形窗和布莱克曼窗,设计2中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较两种窗的特点。
程序代码:
N=15;
w1=0.3;
w2=0.5;
wn1=boxcar(N);
wn2=blackman(N);
hn1=fir1(N-1,[w1 w2],wn1);
hn2=fir1(N-1,[w1 w2],wn2);
[h1,w3]=freqz(hn1,1);
figure(1);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('矩形窗,N=15');
[h1,w3]=freqz(hn2,1);
figure(2);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗,N=15');
N=45;
wn1=boxcar(N);
wn2=blackman(N);
hn1=fir1(N-1,[w1 w2],wn1);
hn2=fir1(N-1,[w1 w2],wn2);
[h1,w3]=freqz(hn1,1);
figure(3);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('矩形窗,N=45');
[h1,w3]=freqz(hn2,1);
figure(4);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-110,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗,N=45');
结果显示:
实验分析:
观察图像发现,同一N值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,主瓣宽度逐渐增大,过渡带变宽,但阻带衰减性能变好;N增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。
四、实验小结
通过实验,深入了解了窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,更可以使用MATLAB软件进行相应的编程,同时也了解到线性相位FIR滤波器的幅频特性和相频特性、及各种不同窗函数对滤波器性能的影响。