实验五FIR数字滤波器的设计(设计性实验)实验名称:FIR数字滤波器的设计实验项目性质:编程设计所属课程名称:数字信号处理计划学时:4一、实验目的1.掌握用窗函数法、频率采样法设计FIR滤波器的原理及方法,熟悉响应的计算机编程;2.熟悉线性相位FIR滤波器的幅频特性和相频特性;3.了解各种不同窗函数对滤波器性能的影响。二、预习与参考2.1窗口法窗函数法设计线性相位FIR滤波器步骤确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度N;根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);选择适当的窗函数w(n),根据h(n)=hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应;求H(ejω),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度,常用的几种窗函数有:矩形窗w(n)=RN(n);Hanning窗;Hamming窗;Blackmen窗;Kaiser窗。式中Io(x)为零阶贝塞尔函数。2.2频率采样法频率采样法是从频域出发,将给定的理想频率响应Hd(ejω)加以等间隔采样然后以此Hd(k)作为实际FIR数字滤波器的频率特性的采样值H(k),即令由H(k)通过IDFT可得有限长序列h(n)将上式代入到Z变换中去可得其中Φ(ω)是内插函数三、设计指标(1)矩形窗设计线性相位低通滤波器(参数自主设定)(2)改用Hanning窗,设计(1)中的低通滤波器。四、实验要求(设计要求)(1)编写窗函数法FIR滤波器设计代码,观察幅频和相位特性的变化,注意长度N变化的影响;观察并记录窗函数对滤波器幅频特性的影响,比较两种窗的特点;(2)要求所编的程序能正确运行;画出波形,完成并提交实验报告。五、调试及结果测试提交带注释的(或给出每个操作所涉及的算法)且运行正确的源程序,说明调试过程中所遇到的问题、解决方法及经验与体会。六、考核形式理论课程闭卷考试,实验部分提交实验报告。七、实验报告要求1.实验报告必须独立完成,抄袭、复制他人作无效处理:2.实验报告要求:(1)要按规定从教学网站下载样板文件格式书写。(2)实验报告要注明姓名,学号,实验名称,完成日期,联系电话。(3)内容不真实、不认真、不能按时完成的,不记成绩。(4)简要说明设计题目、内容、原理。3.附滤波器设计代码及要求的图形。对实验结果和实验中的现象进行简练明确的分析并作出结论或评价,对本人在实验全过程中的经验、教训、体会、收获等进行必要的小结。4.报告要求独立完成,篇幅为A4纸不超过5页,突出自己的设计。5.对改进实验内容、安排、方法、设备等的建议和设想,(此部分可选作)。6.不能完成实验报告者,不能参加课程考试。八、思考题1.不同窗函数对滤波器性能的影响如何?2.线性相位FIR滤波器的幅频特性和相频特性如何?附:实验内容%N=45,计算并画出矩形框、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点%(1)矩形窗(RectangleWindow)调用格式:w=boxcar(n),根据长度n产生一个矩形窗w。%(2)三角窗(TriangularWindow)调用格式:w=triang(n),根据长度n产生一个三角窗w。%(3)汉宁窗(HanningWindow)调用格式:w=hanning(n),根据长度n产生一个汉宁窗w。%(4)海明窗(HammingWindow)调用格式:w=hamming(n),根据长度n产生一个海明窗w。%(5)布拉克曼窗(BlackmanWindow)调用格式:w=blackman(n),根据长度n产生一个布拉克曼窗w。%(6)恺撒窗(KaiserWindow)调用格式:w=kaiser(n,beta),根据长度n和影响窗函数旁瓣的β参数产生一个恺撒窗w1clearall%清零closeall%关闭其他程序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]);%横轴0到1,纵轴是-80到10gridon%画格xlabel('归一化频率/π');%x轴标签ylabel('幅度/dB');%y轴标签title('矩形窗');%标题figure(2)[h,w]=freqz(w2,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-80,10]);gridonxlabel('归一化频率/π');ylabel('幅度/dB');title('汉明窗');figure(3)[h,w]=freqz(w3,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-150,10]);gridonxlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗');2%N=15,带通滤波器的两个通带边界分别是w1=0.3π,w2=0.5π。用汉宁窗设计此线性相位滤波器,观察%它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化,注意N变化的影响。closeall%关闭其他程序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);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗[h1,w3]=freqz(h,1);%%汉宁窗的幅频特性figure(1)%第一张图subplot(2,1,1);%两张图的第一张图plot(w3/pi,20*log10(abs(h1)));%绘制图形gridon;%画格axis([0,1,-80,10]);;%横轴0到1,纵轴是-80到10xlabel('归一化频率/π');%x轴标签ylabel('幅度/dB');%y轴标签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([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');3closeall%关闭其他程序clearall%清零N=15;w1=0.3;w2=0.5;wn1=boxcar(N);%矩形窗的调用wn2=blackman(N);%布莱克曼窗的调用hn1=fir1(N-1,[w1w2],wn1);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗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]);%横轴0到1,纵轴是-80到10xlabel('归一化频率/π');%x轴标签ylabel('幅度/dB');%y轴标签title('矩形窗,N=15');%标题[h1,w3]=freqz(hn2,1);figure(2)plot(w3/pi,20*log10(abs(h1)));gridon;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)plot(w3/pi,20*log10(abs(h1)));gridon;axis([0,1,-110,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗,N=45');4:closeall%关闭其他程序clearall%清零N=40;%beta=4forn=1:3%or循环ifn==1%if语句beta=4;elseifn==2beta=6;elsebeta=10;end;w=kaiser(N,beta);%凯塞窗的调用h=fir1(N-1,[0.20.40.60.8],w);%设计加窗函数的有效滤波器,w指汉宁窗[h1,w1]=freqz(h,1);%凯塞窗的幅频特性figure(n)%第n张图subplot(2,1,1);%两张图的第一张图plot(w1/pi,20*log10(abs(h1)));%绘制图形gridon;%画格axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10xlabel('归一化频率/π');%x轴标签ylabel('幅度/dB');%y轴标签ifn==1%if语句title('beta=4');elseifn==2title('beta=6');elsetitle('beta=10');end;subplot(2,1,2);plot(w1/pi,angle(h1));gridon;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');end5clearall%清零closeall%关闭其他程序N=45;k=0:N-1;fork=0:N-1%for循环w=2*pi/N*k;%取样hk(1,k+1)=0;if((w=0.2*pi)&&(w=0.4*pi))||(w=0.6*pi&&w=0.8*pi)||(w=1.2*pi&&w=1.4*pi)||(w=1.6*pi&&w=1.8*pi)hk(1,k+1)=1;endendk=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*log10(abs(h1)));%绘制图形gridon;%