1、实验五 FIR数字滤波器的设计04011344 王晨一、实验目的(1) 掌握用窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的MATLAB编程。(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性。(3) 了解各种不同窗函数对滤波器性能的影响。二、 实验原理 线性相位实系数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(
2、n)为奇对称,N为偶数;H(ej)=0、20,不适合作低通。 窗口法窗函数法设计线性相位FIR滤波器步骤: 确定数字滤波器的性能要求:临界频率,滤波器单位脉冲响应长度N; 根据性能要求,合理选择单位脉冲响应的奇偶对称性,从而确定理想频率响应 的幅频特性和相频特性; 求理想单位脉冲响应,在实际计算中,可对按M(M远大于N)点等距离采样,并对其求IDFT得,用代替; 选择适当的窗函数,根据求所需设计的FIR滤波器单位脉冲响应; 求,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。窗函数的傅式变换的主瓣决定了过渡带宽。的旁瓣大小和多少决定了在通带和阻带
3、范围内波动幅度,常用的几种窗函数有:(1) 矩形窗(RectangleWindow) (2) 汉宁(Hanning)窗,又称升余弦窗(3) 汉明(Hamming)窗,又称改进的升余弦窗 (4) 布莱克曼(Blankman)窗,又称二阶升余弦窗 (5) 凯塞(Kaiser)窗b 其中:是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,越大,过渡带越宽,阻带越小衰减也越大。第一类修正零阶贝塞尔函数。 频率采样法频率采样法是从频域出发,将给定的理想频率响应)加以等间隔采样,然后以此作为实际FIR数字滤波器的频率特性的采样值,由通过IDFT可得有限长序列,然后进行DTFT或Z变换即可
4、得。 FIR滤波器的优化设计FIR滤波器的优化设计是按照最大误差最小化准则,使所设计的频响与理想频响之间的最大误差,在通带和阻带范围均为最小,而且是等波动逼近的。为了简化起见,在优化设计中一般将线性相位FIR滤波器的单位脉冲响应)(nh的对称中心置于n=0处,此时,线性相位因子=0。令N=2M+1,则如希望逼近一个低通滤波器,这里固定为某个值。在这种情况下有 定义一逼近误差函数:E()为在希望的滤波器通带和阻带内算出的误差值,W()为加权函数,根据数学上多项式逼近连续函数的理论,用三角多项式逼近连续函数,在一定条件下存在最佳逼近的三角多项式,而且可以证明这个多项式是唯一的。这一最佳逼近定理通常
5、称作交替定理。这一算法通常称作雷米兹(Remez)交替算法。三、实验内容(1) N45,计算并画出矩形窗、汉明窗、布莱克曼的归一化的幅度谱,并比较各自的主要特点。程序代码:clearall;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);gridon;xlabel(归一化频率/);ylabel(幅度/dB);title(矩形窗);figure(2);h,w=freqz(w2,N);plot(w/pi,20*log
6、10(abs(h);axis(0,1,-80,10);gridon;xlabel(归一化频率/);ylabel(幅度/dB);title(汉明窗);figure(3);h,w=freqz(w3,N);plot(w/pi,20*log10(abs(h);axis(0,1,-150,10);gridon;xlabel(归一化频率/);ylabel(幅度/dB);title(布莱克曼窗);运行结果:Figure 1-1Figure 1-2Figure 1-3分析:矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克曼窗函数则更甚之。矩形窗设计的滤波器过渡带最窄,
7、但是阻带最小衰减也最差;布莱克曼窗设计的滤波器阻带衰减最好,过渡带最宽,约为矩形窗设计的的三倍。汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。(2) N15,带通滤波器的两个通带边界分别是。用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。N45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响。程序代码:clearall;N=15;w1=0.3;w2=0.5;w=hanning(N);n=0:N-1;alfa=(N-1)/2;h=fir1(N-1,w1w2,w);h1,w3=freqz(h,1);figure(1);subplot(2,1,1);plot(w3/
8、pi,20*log10(abs(h1);gridon;axis(0,1,-80,10);xlabel(归一化频率/);ylabel(幅度/dB);subplot(2,1,2);plot(w3/pi,angle(h1);gridon;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,w1w2,w);h1,w3=freqz(h,1);figure(2);subplot(2,1,1);plot(w3/pi,20*log10(abs(h1);gridon;axis
9、(0,1,-80,10);xlabel(归一化频率/);ylabel(幅度/dB);subplot(2,1,2);plot(w3/pi,angle(h1);gridon;axis(0,1,-4,4);xlabel(归一化频率/);ylabel(角度/rad);运行结果:Figure 2-1Figure 2-2 分析: 可见N增大,其3db带宽和20db带宽分别减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通带较平缓,波动小,阻带衰减大。相频特性曲线显示其相位随频率变化也变大。(3) 分别改用矩形窗和布莱克曼窗,设计(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点
10、。程序代码:clearall;N=15;w1=0.3;w2=0.5;wn1=boxcar(N);wn2=blackman(N);hn1=fir1(N-1,w1w2,wn1);hn2=fir1(N-1,w1w2,wn2);h1,w3=freqz(hn1,1);figure(1);plot(w3/pi,20*log10(abs(h1);gridon;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);gridon;
11、axis(0,1,-80,10);xlabel(归一化频率/);ylabel(幅度/dB);title(布莱克曼窗,N=15);N=45;wn1=boxcar(N);wn2=blackman(N);hn1=fir1(N-1,w1w2,wn1);hn2=fir1(N-1,w1w2,wn2);h1,w3=freqz(hn1,1);figure(3);plot(w3/pi,20*log10(abs(h1);gridon;axis(0,1,-80,10);xlabel(归一化频率/);ylabel(幅度/dB);title(矩形窗,N=45);h1,w3=freqz(hn2,1);figure(4);
12、plot(w3/pi,20*log10(abs(h1);gridon;axis(0,1,-110,10);xlabel(归一化频率/);ylabel(幅度/dB);title(布莱克曼窗,N=45);运行结果:Figure 3-1 Figure 3-2 Figure 3-3 Figure 3-4 分析:同一N值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,主瓣宽度逐渐增大,过渡带变宽,但阻带衰减性能变好;N增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。加窗处理对滤波器的频率响应会产生以下主要影响: 使理想特性不连续的边沿加宽,形成一过渡带,过渡带的宽度取决于窗函数频谱的主
13、瓣宽度。 在过渡带两旁产生肩峰和余振,它们取决于窗函数频谱的旁瓣;旁瓣越多,余振也越多;旁瓣相对值越大,肩峰则越强。 增加截断长度N,只能缩小窗函数频谱的主瓣宽度而不能改变旁瓣的相对值;旁瓣与主瓣的相对关系只决定于窗函数的形状。因此增加N,只能相对应减小过渡带宽。而不能改变肩峰值。肩峰值的大小直接决定通带内的平稳和阻带的衰减,对滤波器性能有很大关系。(4) 用凯塞窗设计一专用线性相位滤波器,N40,如实验图四图,当时,分别设计、比较它们的幅频和相频特性,注意取不同值时的影响。程序代码:clearall;%beta=4;Wd=0.20.40.60.8;M=39;beta=4;hh=fir1(M,
14、Wd,DC-0,kaiser(M+1,beta);H,w=freqz(hh,1);figure;subplot(2,1,1);plot(w/pi,abs(H);xlabel(omega/pi);ylabel(幅度);grid;title(幅频特性,beta=4);subplot(2,1,2);plot(w/pi,angle(H);xlabel(omega/pi);ylabel(弧度);grid;title(相频特性);%beta=6;Wd=0.20.40.60.8;M=39;beta=6;hh=fir1(M,Wd,DC-0,kaiser(M+1,beta);H,w=freqz(hh,1);fi
15、gure;subplot(2,1,1);plot(w/pi,abs(H);xlabel(omega/pi);ylabel(幅度);grid;title(幅频特性,beta=6);subplot(2,1,2);plot(w/pi,angle(H);xlabel(omega/pi);ylabel(弧度);grid;title(相频特性);%beta=10;Wd=0.20.40.60.8;M=39;beta=10;hh=fir1(M,Wd,DC-0,kaiser(M+1,beta);H,w=freqz(hh,1);figure;subplot(2,1,1);plot(w/pi,abs(H);xlab
16、el(omega/pi);ylabel(幅度);grid;title(幅频特性,beta=10);subplot(2,1,2);plot(w/pi,angle(H);xlabel(omega/pi);ylabel(弧度);grid;title(相频特性);运行结果:Figure 4-1Figure 4-2Figure 4-3分析:越大,w(n)窗越窄,频谱的旁瓣越小,但主瓣宽度也相应增加,过渡带变宽,相位特性变好。(5)用频率采样法设计(4)中的滤波器,过渡带分别设一个过渡点,令H(k)=0.5。比较两种不同方法的结果。程序代码: clearall;N=45;k=0:N-1;fork=0:N-
17、1w=2*pi/N*k;hk(1,k+1)=0;if(w=0.2*pi)&(w=0.6*pi&w=1.2*pi&w=1.6*pi&w=1.8*pi);hk(1,k+1)=1;end;end;k=0:N-1;hk(1,5)=0.5;hk(1,11)=0.5;hk(1,14)=0.5;hk(1,20)=0.5;hk(1,27)=0.5;hk(1,33)=0.5;hk(1,36)=0.5;hk(1,42)=0.5;thetak=-k*2*pi/N*(N-1)/2);hk1=hk.*exp(j*thetak);hn=ifft(hk1);h1,w1=freqz(hn,1);plot(w1/pi,20*l
18、og10(abs(h1);gridon;axis(0,1,-80,10);xlabel(归一化频率/);ylabel(幅度/dB);运行结果: Figure 5(6)用雷米兹(Remez)交替算法设计(4)中的滤波器,并比较(4)、(5)、(6)三种不同方法的结果。 程序代码:clearall;N=40;M=N-1;f=00.150.20.40.450.550.60.80.851;a=0011001100;weight=21212;h=remez(M,f,a,weight);H,w=freqz(h,1);plot(w/pi,20*log10(abs(H);grid;xlabel(归一化频率/p
19、i);ylabel(幅度/dB);运行结果:Figure 6(7)利用雷米兹(Remez)交替算法,设计一个线性相位高通FIR数字滤波器,其指标为:fc=800Hz,=1dB,Hzfr500=,At=40dB,fs=5000Hz。程序代码:clearall;f=500800;fs=5000;a=01;dev=0.0090.1;M,fpts,mag,wt=remezord(f,a,dev,fs);h=remez(M,fpts,mag,wt);H,w=freqz(h,1);plot(w*2500/pi,20*log10(abs(H);grid;xlabel(幅频/Hz);ylabel(幅度);运行
20、结果: Figure 7四、思考题(1) 定性地说明用本实验程序设计的FIR滤波器的3dB截止频率在什么位置?它等于理想频率响应的截止频率吗?答:三分贝截止频率在主瓣内,幅度为最大幅度的一半的位置。它理论上不等于理想频率响应的截止频率,因为加了窗函数,频域上相当于是理想频率响应乘以窗函数,因此不一样。实验中读出的3db带宽刚好和给的数值一样只是因为读书的误差,由图读得比较不精确。(2) 如果没有给定的长度N,而是给定了通带边缘截止频率和阻带临界频率,以及相应的衰减,能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?答:可以,先根据不同窗函数的最小阻带衰减不同来选择适合(有不同的选择方法,只要符合条件即可)的窗函数,再利用主瓣宽,计算出N的值,再按前面的方法进行设计即可。