FIR滤波器设计.docx
《FIR滤波器设计.docx》由会员分享,可在线阅读,更多相关《FIR滤波器设计.docx(14页珍藏版)》请在冰点文库上搜索。
FIR滤波器设计
数字信号处理实验报告
FIR滤波器设计
学生姓名
班级
电子信息工程1203班
学号
指导教师
2015.5.14
实验三FIR滤波器设计
1.实验目的
(1)掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉响应的matlab编程。
(2)熟悉线性相位FIR滤波器的幅频特性和相频特性。
(3)了解各种不同窗函数对滤波器性能的影响。
2.实验原理
(一)线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性分为四种:
1、h(n)为偶对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成偶对称。
2、h(n)为偶对称,N为偶数;H(ejω)的幅值关于ω=π成奇对称,不适合作高通。
3、h(n)为奇对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成奇对称,不适合作高通和低通。
4、h(n)为奇对称,N为偶数;H(ejω)ω=0、2π=0,不适合作低通。
3.实验内容
(1)N=45,计算并画出矩形窗、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点。
MATLAB源程序:
clearall;
N=45;
wn1=kaiser(N,0);
wn2=hamming(N);
wn3=blackman(N);
[h1,w1]=freqz(wn1,N);
[h2,w2]=freqz(wn2,N);
[h3,w3]=freqz(wn3,N);
plot(w1/pi,20*log10(abs(h1)),'-',w2/pi,20*log10(abs(h2)),'--',w3/pi,20*log10(abs(h3)),':
');
axis([0,1,-140,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');
title('三种窗口函数');
legend('矩形窗','汉明窗','布莱克曼窗',3);
实验结果图:
分析:
矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克曼窗函数则更甚之。
矩形窗设计的滤波器过渡带最窄,但是阻带最小衰减也最差;布莱克曼窗设计的滤波器阻带衰减最好,过渡带最宽,约为矩形窗设计的三倍。
汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。
(2)N=15,带通滤波器的两个通带边界分别是
,
。
用汉宁(Hanning)窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。
N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响。
MATLAB源程序:
clearall;
N=15;
h=fir1(N-1,[0.30.5],'bandpass',hanning(N));
figure
(1)
freqz(h,1)
title('N=15,汉宁窗');
N=45;
h=fir1(N-1,[0.30.5],'bandpass',hanning(N));
figure
(2)
freqz(h,1)
title('N=45,汉宁窗');
实验结果图:
分析:
观察它的实际3dB和20dB带宽,发现N=15时,其3DB带宽约为0.2pi,20db带宽约为0.45pi;N=45时,其3DB带宽约为0.16pi,20db带宽约为0.3pi可见N增大,其3db带宽和20db带宽分别减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通带较平缓,波动小,阻带衰减大。
相频特性曲线显示其相位随频率变化也变大。
(3)分别改用矩形窗和Blackman窗,设计
(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点。
MATLAB源程序:
clearall;%矩形窗
N=15;h=fir1(N-1,[0.30.5],'bandpass',kaiser(N,0));
[h1,w1]=freqz(h,1);
subplot(2,2,1);plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');title('N=15,矩形窗');
N=45;h=fir1(N-1,[0.30.5],'bandpass',kaiser(N,0));
[h1,w1]=freqz(h,1);
subplot(2,2,2);plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');title('N=45,矩形窗');
N=15;h=fir1(N-1,[0.30.5],'bandpass',blackman(N));
[h1,w1]=freqz(h,1);
subplot(2,2,3);plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');title('N=15,布莱克曼窗');
N=45;h=fir1(N-1,[0.30.5],'bandpass',blackman(N));
[h1,w1]=freqz(h,1);
subplot(2,2,4);plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');title('N=45,布莱克曼窗');
实验结果图:
分析:
同一N值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,通过滤波器的幅频特性可见,矩形窗过渡带最窄,阻带衰减最小;布莱克曼窗过渡带最宽,阻带衰减最大。
N增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。
(4)用Kaiser窗设计一专用线性相位滤波器,N=40,如图,当β=4、6、10时,分别设计、比较它们的幅频和相频特性,注意β取不同值时的影响。
MATLAB源程序:
clearall;
N=40;
f=[00.20.20.40.40.60.60.80.81];
a=[0011001100];
beta=4;h=fir2(N-1,f,a,kaiser(N,beta));
[h1,w1]=freqz(h,1);
subplot(3,1,1);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');
title('beta=4时凯塞窗专用线性相位滤波器');
beta=6;h=fir2(N-1,f,a,kaiser(N,beta));
[h1,w1]=freqz(h,1);
subplot(3,1,2);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');
title('beta=6时凯塞窗专用线性相位滤波器');
beta=10;h=fir2(N-1,f,a,kaiser(N,beta));
[h1,w1]=freqz(h,1);
subplot(3,1,3);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;
xlabel('归一化频率/\pi');ylabel('幅度/dB');
title('beta=10时凯塞窗专用线性相位滤波器');
实验结果图:
分析:
随着β取值增大,过渡带变宽,阻带衰减增大。
(5)用频率采样法设计(4)中的滤波器,过渡带分别设一个过渡点,令H(k)=0.5。
比较两种不同方法的结果。
MATLAB源程序:
clearall;
N=40;
Hk=[zeros(1,3)0.5ones(1,5)0.5zeros(1,1)0.5ones(1,5)0.5...
zeros(1,5)-0.5-ones(1,5)-0.5zeros(1,1)-ones(1,5)-0.5zeros(1,3)];
k=0:
N-1;
hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N)));
[Hw]=freqz(hn,1);
plot(w/pi,20*log10(abs(H)));
axis([01-8010]);grid;
xlabel('归一化频率/\pi')
ylabel('幅度/dB')
title('频率采样法设计专用线性相位滤波器');
实验结果图:
分析:
与实验4窗口法的设计结果比较,频率采样法设计的滤波器阻带衰减小于窗口法,约30dB;窗口法的通带边界误差较大,在通带边界处有6dB的衰减。
(6)用雷米兹(Remez)交替算法设计(4)中的滤波器,并比较(4)、(5)、(6)三种不同方法的结果。
MATLAB源程序:
clearall;
N=40;
f=[00.150.20.40.450.550.60.80.851];
a=[0011001100];
wt=[21212];
b=remez(N-1,f,a,wt);
[h,w]=freqz(b,1);
plot(w/pi,20*log10(abs(h)));
axis([01-7010]);grid;
xlabel('归一化频率/\pi')
ylabel('幅度/dB')
title('雷米兹交替算法设计专用线性相位滤波器');
实验结果图:
分析:
与实验34的结果比较,雷米兹交替算法设计的滤波器阻带衰减大于频率采样法,小于窗口法;雷米兹交替算法带内带外起伏呈现等波纹状;雷米兹交替算法设计的滤波器边界易于控制,而窗口法的通带边界误差较大,在通带边界有约6dB的衰减。
(7)利用雷米兹(Remez)交替算法,设计一个线性相位高通FIR数字滤波器,其指标为:
,
,
。
MATLAB源程序:
clearall;
fedge=[500800];
mval=[01];
dev=[0.010.109];
fs=5000;
[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);
b=remez(N,fpts,mag,wt);
[h,w]=freqz(b,1);
plot(w*2500/pi,20*log10(abs(h)));
axis([02500-8010]);grid;
xlabel('频率/Hz')
ylabel('幅度/dB')
title('雷米兹交替算法设计线性相位高通FIR数字滤波器');
实验结果图:
4.实验思考题
1.定性地说明用本实验程序设计的FIR滤波器的3dB截止频率在什么位置?
它等于理想频率响应Hd(ejω)的截止频率吗?
答:
三分贝截止频率在主瓣内,幅度为最大幅度的一半的位置。
它理论上不等于理想频率响应的截止频率,因为加了窗函数,频域上相当于是理想频率响应乘以窗函数,因此不一样。
实验中读出的3dB带宽刚好和给的数值一样只是因为读数的误差,由上图读得的比较不精确。
2.如果没有给定h(n)的长度N,而是给定了通带边缘截止频率ωc和阻带临界频率ωp,以及相应的衰减,你能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?
答:
可以,先根据不同窗函数的最小阻带衰减不同来选择适合(有不同的选择方法,只要符合条件即可)的窗函数,再利用主瓣宽,计算出N的值,下面就可以按前面的方法进行设计了。
5.实验结论
通过本实验FIR滤波器的设计,采用窗函数法,进一步熟悉了滤波器的设计,掌握了用窗函数设计FIR数字滤波器的原理及方法,熟悉了相应的计算机高级语言编程,从所做的图中也更熟悉了FIR滤波器的幅频和相频响应,也更清楚地知道了各种窗函数的不同。
主瓣宽度和旁瓣高度是互相矛盾的两方面,主瓣宽度反映的是滤波器的通带频率和阻带频率,旁瓣高度则反映了滤波器的阻带衰减特性,设计时要兼顾双方,根据滤波器的要求相互协调。