实验七FIR数字滤波器设计【实验目的】1.熟悉线性相位FIR数字滤波器特性。2.掌握用窗函数法设计FIR数字滤波器的设计方法;3.阅读扩展练习中的实例,学习FIR滤波器的设计方法及其在MATLAB中的实现。【实验原理】1.FIR数字滤波器的提出IIR的优点是可以利用现成的模拟滤波器原型进行数字滤波器的设计;FIR数字滤波器可以设计出具有严格的线性相位的数字滤波器,并使系统稳定、因果。线性相位的条件:h(n)(包含M个有限长序列)在主值区间里面偶对称或者奇对称。2.四种线性相位FIR数字滤波器类型1:h(n)偶对称,M为奇数21210]cos)([)(MjMnjennaeH)21()0(Mha)21(2)(nMhnan=1,2,…21M210cos)()(MnrnnaH(幅度)%计算滤波器振幅响应—线性相位FIR滤波器类型1function[Hr,w,a,L]=hr_type1(h)%计算线性相位类型1FIR滤波器的幅频特性,频率只考虑[0,pi]的情况%输入变量h为原始序列%H为幅频特性中的幅度变量%w为幅频特性中的频率变量,设定在[0;pi]间有500个频率点,可修改%a为线性相位幅度响应中的系数a(n)%L为滤波器的阶数,类型1为(N-1)/2M=length(h);L=(M-1)/2;a=[h(L+1)2*h(L:-1:1)];n=[0:L];w=[0:500]'*2*pi/500;Hr=cos(w*n)*a';类型2h(n)偶对称,M为偶数220}])5.0(cos{)([)(MjMnjennbeH)2(2)(nMhnbn=1,2,…2M)5.0(cos)()(20MnrnnbH(幅度)%计算滤波器振幅响应—线性相位FIR滤波器类型2function[Hr,w,b,L]=hr_type2(h)M=length(h);L=M/2;b=2*[h(L:-1:1)]n=[1:L];n=n-0.5;w=[0:500]'*2*pi/500;Hr=cos(w*n)*b';类型3:h(n)奇对称,M为奇数)212(210]sin)([)(MjMnjennceH)21(2)(nMhncn=1,2,…21M210sin)()(MnrnncH(幅度)%计算滤波器振幅响应—线性相位FIR滤波器类型3function[Hr,w,c,L]=hr_type3(h)M=length(h);L=(M-1)/2;c=[2*h(L+1:-1:1)];n=[0:L];w=[0:500]'*2*pi/500;Hr=sin(w*n)*c';类型4:h(n)奇对称,M为偶数220}])5.0(sin{)([)(MjMnjenndeH)2(2)(nMhndn=1,2,…2M)5.0(sin)()(20MnrnndH(幅度)%计算滤波器振幅响应—线性相位FIR滤波器类型4function[Hr,w,d,L]=hr_type4(h)M=length(h);L=M/2;d=2*[h(L:-1:1)];n=[1:L];n=n-0.5;w=[0:500]'*2*pi/500;Hr=sin(w*n)*d';表1四种线性相位FIR滤波器特性例:滤波器h(n)=[-4,1,-1,-2,5,6,5,-2,-1,1,-4],求滤波器的幅度响应)(jweH。h=[-4,1,-1,-2,5,6,5,-2,-1,1,-4];M=length(h);n=0:M-1;[Hr,w,a,L]=hr_type1(h);figure(1)subplot(2,1,1);stem(n,h);title('ImpulseResponse')subplot(2,1,2);plot(w/pi,Hr);gridtitle('Type-1AmplitudeResponse')类型h(n)Hg(ω)能设计滤波器类型1型h(n)=h(N-1-n),N为奇数Hg(ω)关于ω=0、π、2π偶对称低通、高通、带通、带阻2型h(n)=h(N-1-n),N为偶数Hg(ω)关于ω=0、2π偶对称,关于ω=π奇对称低通、带通3型h(n)=-h(N-1-n),N为奇数Hg(ω)关于ω=0、π、2π奇对称带通4型h(n)=-h(N-1-n),N为偶数Hg(ω)关于ω=0、2π奇对称,关于ω=π偶对称高通、带通3.FIR数字低通滤波器设计步骤1)分析数字滤波器设计要求,给出理想低通的幅度特性)(jwdeH,一般wc选择在过渡带的中间。2)计算出理想低通的)(nhd3)选择合适的窗函数w(n),进行加窗处理h(n)=hd(n)w(n)。窗函数的选择考虑到阻带的衰减,通过查表(表2)得到。4)测试计算结果。表2不同窗函数基本参数比较窗函数过渡区宽度(△w/(2pi/N))最小阻带衰减Matlab产生函数矩形窗0.921dBboxcar(N)Bartlett2.125dBBartlett(N)Hanning3.144dBHanning(N)Hamming3.353dBHamming(N)Blackman5.574dBBlackman(N)4.利用窗函数设计FIR滤波器若要用窗函数设计FIR数字滤波器的步骤,则首先需要编写产生理想低通、高通、带通、带阻滤波器的冲激响应函数。以理想低通的冲激响应函数idealp为例,程序为functionhd=ideal_lp(wc,M)alpha=(M-1)/2;n=[0:(M-1)];m=n-alpha+eps;hd=sin(wc*m)./(pi*m)%freqz的修正function[db,mag,pha,grd,w]=freqz_m(b,a,wmax)[H,w]=freqz(b,a,1000,'whole');H=(H(1:wmax/2+1))';w=(w(1:wmax/2+1))';mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);grd=grpdelay(b,a,w);5.Matlab设计FIR滤波器的函数MATLAB有多个专门用于FIR滤波器设计的函。fir1以经典方式设计基于窗函数的FIR滤波器,给出标准的低通、高通、带通、带阻的频率响应。1)b=firl(n,Wn)得到n阶的低通FIR滤波器,滤波器的时域系数h(n)包含在向量b中。n为滤波器的阶数,Wn为3dB截止频率。若Wn不是一个数,而是矢量[W1W2]时,【实验内容】一、FIR滤波器线性相位的条件。h(n)是实序列,且满足偶对称或奇对称,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),对称轴二、比较四种FIR数字滤波器线性相位的特点;三、描述FIR数字滤波器的设计步骤。1)分析数字滤波器设计要求,给出理想低通的幅度特性,一般wc选择在过渡带的中间。2)计算出理想低通的3)选择合适的窗函数w(n),进行加窗处理h(n)=hd(n)w(n)。窗函数的选择考虑到阻带的衰减,通过查表(表2)得到。4)测试计算结果。四、设计FIR低通滤波器wp=0.2pi;ws=0.3pi;最小阻带衰减50dbwp=0.2pi;ws=0.4pi;最小阻带衰减60dbwp=0.2*pi;ws=0.3*pi;wc=(wp+ws)/2;w1=ws-wp;N=6.6*pi/w1;a=(N-1)/2;n=0:N;hd=sin(wc*(n-a))./(pi*(n-a));Wh=hamming(N);h=Wh*hd;freqz(h);figure(2);stem(h,'.');xlabel('n'),ylabel('h(n)');类型h(n)Hg(ω)能设计滤波器类型1型h(n)=h(N-1-n),N为奇数Hg(ω)关于ω=0、π、2π偶对称低通、高通、带通、带阻2型h(n)=h(N-1-n),N为偶数Hg(ω)关于ω=0、2π偶对称,关于ω=π奇对称低通、带通3型h(n)=-h(N-1-n),N为奇数Hg(ω)关于ω=0、π、2π奇对称带通4型h(n)=-h(N-1-n),N为偶数Hg(ω)关于ω=0、2π奇对称,关于ω=π偶对称高通、带通wp=0.2*pi;ws=0.4*pi;wc=(wp+ws)/2;w1=ws-wp;N=11*pi/w1;a=(N-1)/2;n=[0:N];hd=sin(wc*(n-a))./(pi*(n-a));Wh=blackman(N);h=Wh'.*hd;freqz(h);figure(2);stem(h,'.');xlabel('n'),ylabel('h(n)');五、用海明窗设计一个阶数为48,通带范围为0.35pi≤w≤0.65pi的带通线性相位滤波器。1.wc=[0.30.7];h=fir1(48,wc);freqz(h);figure(2);stem(h,'.');xlabel('n'),ylabel('h(n)');2.wc1=0.35*pi;wc2=0.65*pi;N=48;a=(N-1)/2;n=0:N-1;hd=sin(wc2*(n-a))./(pi*(n-a))-sin(wc1*(n-a))./(pi*(n-a));Wh=hamming(N);h=Wh'.*hd;freqz(h);figure(2);stem(h,'.');xlabel('n'),ylabel('h(n)');