2022年通信综合课程方案报告 .pdf
个人资料整理仅限学习使用MATLAB 环境下 FIR 滤波器的设计与仿真一 引言在很多实际的电子系统中,既要求有良好的幅度频率特性,又要求有线性相位特性,所以IIR滤波器在这些系统中难以胜任。而有限长单位冲激响应是有限长,可以用一个因果系统来实现,因而FIR 数字滤波器可以做成因果又是稳定的系统,同时,允许设计多通带,要求设计一个 FIR 滤波器频率响应 , 去逼近理想的频率响应 Hd(ej 。然而,窗函数法设计FIR 数字滤波器是在时域进行的,因此,必须首先由理想频率响应Hd(ej 的傅里叶反变换推导出对应的单位脉冲响应hd(n hd(n= (2.1.1 由于许多理想化的系统均用分段恒定的或分段函数表示的频率响应来定义,因此这种系统具有非因果的和无限长的脉冲响应,即hd( n一定是无限长的序列,且是非因精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 12 页个人资料整理仅限学习使用果的。因此其系统函数Hd(z是物理不可实现在,为了是系统变为物理可实现性,也就是我们要设计的是FIR 滤波器,且实际的FIR 滤波器频率响应尽可能逼近理想滤波器的频率响应,其h( n必定是有限长的,所以采用窗函数将用有限长的h(n来逼近无限长的 hd(n,最简单且最有效的方法是截断hd ( n, hd(n 0nN-1 h(n= (2.1.2 0 其它通常,我们可以把h( n表示为所需单位脉冲响应与一个有限长的窗口函数序列w( n的乘积,即h(n=hd( nw(n (2.1.3 窗函数在设计数字滤波器中有很重要的作用,正确选择窗函数可以提高所设计的数字滤波器的性能,或者在满足设计要求的情况下,减小FIR 数字滤波器的阶数。窗函数法,通常也称之为傅里叶级数法,它是在时域进行的。在实际工程中常用的窗函数有五种,即矩形窗、三角窗、汉宁窗、海明窗和凯泽窗,这些窗函数在MATLAB 中分别用 boxcar 、triang 、hanning、hamming 、kaiser实现,它们之间的性能比较如表1 所示。五种窗之间的性能比较表 1)窗函数旁瓣峰值主瓣峰值最小阻带衰减矩形窗13dB 4 /M 21dB 三角窗25dB 8 /M 25dB 汉宁窗31dB 8 /M 44dB 海明窗41dB 8 /M 53dB 凯泽窗57dB 12 /M 74dB 使用窗函数法设计FIR 滤波器应满足以下两个条件:1、窗谱主瓣尽可能地窄,以获得较陡的过渡带;2、尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中在主瓣,减少峰肩和纹波,进行增加阻带的衰减。2 必要的计算根据工程经验,给定的滤波器指标参数一般为通带截止频率wp 、阻带截止频率ws、实际通带波动Rp和最小阻带衰减As。窗函数设计的经验公式为:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 12 页个人资料整理仅限学习使用归一化过渡帯滤波器阶数当 As50 时,=0.1102As-8.7 )当 21As50 时,=0.5842As-21)0.4+0.077886计算的程序实现 % compute the ideal highpass fiter unit pulse respondence hd (n% Wc: cutoff frequency 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 12 页个人资料整理仅限学习使用% N: Window length %hd: unit pulse respondence Wp=0.6*pi。Ws=0.4*pi 。tr_width=Wp-Ws。N=ceil(6.2*pi/tr_width n=0:1:N-1 Wc=(Ws+Wp/2。alpha=(N-1/2 。n=0:1:N-1 。m=n-alpha+eps。hd=sin(pi*m-sin(Wc*m./(pi*m。%-采用汉宁窗函数设计FIR 高通滤波器在 Matlab 中的程序实现:主程序部分:%-% exa5-9_hannhigh1.m,for example 5-9 % 使用汉宁窗设计高通数字滤波器clear all。Wp=0.6*pi。Ws=0.4*pi 。tr_width=Wp-Ws。 % 过渡带宽度N=ceil(6.2*pi/tr_width % 滤波器长度精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 12 页个人资料整理仅限学习使用n=0:1:N-1 。Wc=(Ws+Wp/2。 % 理想高通滤波器的截止频率hd=ideal_lp1(Wc,N 。 % 理想高通滤波器的单位冲激响应w_han=(hanning(N 。 % 汉宁窗h=hd.*w_han。 % 截取得到实际的单位脉冲响应db,mag,pha,w=freqz_m2(h,1。 % 计算实际滤波器的幅度响应delta_w=2*pi/1000。Ap=-(min(db(Wp/delta_w+1:1:501 % 实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1 %实际阻带纹波subplot(221 stem(n,hd xlabel(理想单位脉冲响应hd(n subplot(222 stem(n,w_han xlabel(汉宁窗 w(n subplot(223 stem(n,h xlabel(实际单位脉冲响应hd(n subplot(224 plot(w/pi,db xlabel(幅度响应 (db axis(0,1,-100,10 %-精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 12 页个人资料整理仅限学习使用functiondb,mag,pha,w=freqz_m2(b,a % 滤波器幅值响应 的分子项 (FIR,b=h % a: 系统函数 H(z的分母项 ( 对 FIR,a=1 Wp=0.6*pi。Ws=0.4*pi 。tr_width=Wp-Ws。N=ceil(6.2*pi/tr_width n=0:1:N-1 。Wc=(Ws+Wp/2。hd=ideal_lp1(Wc,N 。w_han=(hanning(N 。h=hd.*w_han。b=h。a=1 。H,w=freqz(b,a,1000,whole。H=(H(1:1:501 。w=(w(1:1:501 。mag=abs(H 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 12 页个人资料整理仅限学习使用db=20*log10(mag+eps/max(mag。pha=angle(H。%-运行结果: N=31 Ap=0.0887 As=44 由结果可知,所设计的高通滤波器为I 型滤波器,它的通带纹波和阻带纹波均满足设计要求。汉宁窗函数设计的高通滤波器响应曲线:0102030-0.500.5理 想 单 位 脉 冲 响 应 hd(n)010203000.51汉 宁 窗 w(n)0102030-0.500.5实 际 单 位 脉 冲 响 应 hd(n)00.51-100-500幅 度 响 应 (db)汉宁窗函数高通滤波器响应曲线采用海明窗函数设计FIR 高通滤波器在 Matlab 中的程序实现:主程序部分:%-% exa5-9_hannhigh1.m,for example 5-9 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 12 页个人资料整理仅限学习使用% 使用海明窗设计高通数字滤波器clear all。Wp=0.6*pi。Ws=0.4*pi 。tr_width=Wp-Ws。 % 过渡带宽度N=ceil(6.2*pi/tr_width % 滤波器长度n=0:1:N-1 。Wc=(Ws+Wp/2。 % 理想高通滤波器的截止频率hd=ideal_lp1(Wc,N 。 % 理想高通滤波器的单位冲激响应w_ham=(hamming(N 。 % 海明窗h=hd.*w_ham 。 % 截取得到实际的单位脉冲响应db,mag,pha,w=freqz_m2(h,1。 % 计算实际滤波器的幅度响应波delta_w=2*pi/1000。Ap=-(min(db(Wp/delta_w+1:1:501 % 实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1 %实际阻带纹波subplot(221 stem(n,hd xlabel(理想单位脉冲响应hd(n subplot(222 stem(n,w_ham xlabel(海明窗 w(n subplot(223 stem(n,h 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 12 页个人资料整理仅限学习使用xlabel(实际单位脉冲响应hd(n subplot(224 plot(w/pi,db xlabel(幅度响应 (db axis(0,1,-100,10 %-functiondb,mag,pha,w=freqz_m2(b,a % 滤波器幅值响应 的分子项 (FIR,b=h % a: 系统函数 H(z的分母项 ( 对 FIR,a=1 Wp=0.6*pi。Ws=0.4*pi 。tr_width=Wp-Ws。N=ceil(6.2*pi/tr_width n=0:1:N-1 。Wc=(Ws+Wp/2。hd=ideal_lp1(Wc,N 。w_ham=(hamming(N 。h=hd.*w_ham 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 12 页个人资料整理仅限学习使用0102030-0.500.5理 想 单 位 脉 冲 响 应 hd(n)010203000.51海 明 窗 w(n)0102030-0.500.5实 际 单 位 脉 冲 响 应 hd(n)00.51-100-500幅 度 响 应 (db)b=h。a=1 。H,w=freqz(b,a,1000,whole。H=(H(1:1:501 。w=(w(1:1:501 。mag=abs(H 。db=20*log10(mag+eps/max(mag。pha=angle(H。%-运行结果: N =31Ap =0.1189As =39由结果可知,所设计的高通滤波器为I 型滤波器,它的通带纹波和阻带纹波均满足设计要求。海明窗高通滤波器响应曲线精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 12 页个人资料整理仅限学习使用通过汉宁窗函数和海明窗函数设计结果比较:汉宁窗、海明窗都能提供大于40dB的最小阻带衰减,但汉宁窗的旁瓣峰值较小,而主瓣宽度和海明窗一样,可以使滤波器的阶数较少,所以选用汉宁窗进行设计。三 结论1、设计总结: 数字滤波器是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。本文针对在实际设计中要大量应用数字滤波器这一现实,对有限冲击响应数字滤波器(FIR的基本理论、性能特点、设计方法进行了全面的分析,特别是对常用窗函数设计方法的两种窗进行参数的对比,选取了汉宁窗函数进行设计。与其它高级语言相比,Matlab 环境下可以更方便、快捷地设计出具有严格线性相位的FIR 滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。通过Matlab 仿真实验,结果表明改进窗函数不仅具有一般窗函数设计简单、易于实现的优点,而且还可通过参数的选择,在阻帯衰减和过渡帯间做最佳选择,使旁瓣幅度与主瓣的宽度之间达到更好的匹配,能实现较好的滤波效果,达到数字滤波的目的。上述这些充分体现了该函数的优越性,具有实用性。2、心得与收获: 为期四周的通信综合课程设计结束了,此次课程设计是通信工程专业学生重要实践课。一方面,经过查资料、选方案、总体设计、方案实现、分析实验结果、撰写设计报告,得到了一次较全面的工程实践训练。另一方面,通过课程设计,注重培养了理论联系实际,培养和提高了创新能力;同时,在归定时间完成指定的设计和实验任务,实现了理论知识到工程实践的过渡,为以后的毕业设计和将来出去工作打下了基础。参考文献1、 董长虹等 . MATLAB 信号处理与应用. 北京:国防工业出版社,2005 2、 美 M.H. 海因斯著,张建华等译. 数字信号处理. 北京:科学出版社,2002 3、 张葛祥,李娜 . MATLAB仿真技术与应用. 北京:清华大学出版社,2003 4、 楼顺天,李博菡. 基于 MATLAB 的系统分析与设计. 西安:西安电子科技大学出版社,1998 5、吴湘淇,肖熙,郝晓莉. 信号系统与信号处理的软硬件实现M. 北京:电子工业出版社,2003 6、 张葛祥,李娜 .MATLAB仿真技术与应用M. 北京:清华大学出版社,2003 7、 陈桂明 . 应用 MATLAB 语言处理数字信号与数字图像M. 北京:科学出版社,2001 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 12 页个人资料整理仅限学习使用8、 陈怀琛 . 数字信号处理教程-MATLAB释义与实现 M. 北京:电子工业出版社,2004 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 12 页