您的当前位置:首页正文

基于Matlab的FIR数字滤波器的设计

2024-08-29 来源:一二三四网
维普资讯 http://www.cqvip.com

第27卷第3期 长春工业大学学报(自然科学版) Vo1.27.No.3 2006年9月 Journal of Changchun University of Techonology(Natural Science Edition) Sep.2006 文章编号:1006-2939(2006)03-0254-04 基于Matlab的FIR数字滤波器的设计 -广4 吉 ,口' 姜 涛 (1.吉林大学机械科学与工程学院,吉林长春130022}2.长春工业大学机电工程学院,吉林长春 130012) 摘要:介绍了应用Matlab语言设计FIR数字滤波器时采用的两种方法——直接程序设计法和使用FDA— tool界面的设计法,同时介绍了FIR数字滤波器几种设计方法的函数调用格式;通过实例,给出了程序设计法 和使用信号处理工具箱中的FDAtool界面进行设计的详细步骤,并在Matlab的Simulink环境下,对所设计 的滤波器进行了仿真。 关键词:数字滤波器;Matlab;有限长冲击响应;FDAtool 中图分类号:TP311.11 文献标识码:A 0 引 言 FIR数字滤波器系统的传递函数为: N--1 = = 随着计算机技术和集成电路技术的发展,数 字信号处理以其方便、灵活的特点,越来越引起人 由此得到系统的差分方程: 们的重视。数字滤波器是数字信号处理的重要内 ( )=6(0)z( )+6(1)z( 一1)+…+ 容,数字滤波器的设计已成为数字信号处理研究 6(N—1)zEn一(N—1)] 中的热点之一。 应用Matlab语言可以快捷地设计出由软件 若FIR数字滤波器的单位脉冲响应序列为 组成的数字滤波器,很容易通过对参数的修改进 ^( ),它就是滤波器系数向量b(n)E引。 行性能的优化。FIR滤波器(即有限长冲击响应 应用Matlab设计FIR滤波器的主要任务就 滤波器,Finite Impulse Response Digital Filter) 是根据给定的性能指标,设计一个H(z),使其逼 最大的优点就是在满足幅频特性的同时,还可以 近这一指标,进而计算并确定滤波器的系数6( ), 获得严格的线性相位特性[1],这使它在语音处理、 再将所设计滤波器的幅频响应、相频响应曲线作 图像处理等要求高保真的数字信号处理中显得十 为输出,与设计要求进行比较,对设计的滤波器进 分重要。 行优化。 1 FIR数字滤波器的设计原理 2 FIR数字滤波器的直接程序设计法 滤波器就是在时间域或频域内,对已知激励, FIR滤波器的主要设计方法有窗函数法、最 产生规定响应的网络,使其能够从信号中提取并 优化设计法及约束最小二乘逼近法。在滤波器传 放大有用的信号,抑制并衰减不需要的信号。数 统设计中,要得到其幅频和相频响应特性,需要根 字滤波器的设计,实质上就是对提出的设计要求 据这些方法进行大量的计算,这使得滤波器的设 给出相应的性能指标,再通过计算,使物理可实现 计缓慢,周期变长,不利于设计的优化。Matlab 的实际滤波器频率响应特性,逼近给出的频率响 信号处理工具箱中提供了基于滤波器设计方法的 应特性。设计完成后,可根据计算结果在FPGA 工具函数[3],编程中可根据设计要求直接调用相 或DSP上实现。 应的函数,方便快捷,见表l。 收稿日期:2006—04—21 作者简介:丁吉(1978--),男・吉林长岭人,中国人民解放军空军航空大学助教.吉林大学硕士研究生,主要从事 微型电液一体化系统研究. 维普资讯 http://www.cqvip.com

第3期 丁吉。等:基于Matlab的FIR数字滤波器的设计 255 下面通过一个实例来说明如何用程序法设计 滤波器。 在设计中,如果该滤波器的特性不满足要求, 那么,原有参数必须作适当调整。这在程序中很 容易实现,只需对参数进行重新设定,就可以得到 新条件下滤波器的特性。 例1要求设计一个最小阶数的低通滤波 器,采样频率厂l=2 000 Hz,通带截止频率为 500 Hz,阻带的截至频率为600 Hz,阻带最小衰 减为40 dB,通带的最大衰减为3 dB。 在设计之前,首先要确定使用什么样的方法 进行设计,本例选用等波纹的最优化设计法。在 在实际应用中,如果需要对某一信号源进行 特定的滤波,并要检验滤波效果,应用传统方法实 施起来比较繁琐。在Matlab环境下,可先用软件 模拟产生信号源,再设计滤波器对其进行滤波,如 下面的实例。 Matlab命令窗口直接键人程序代码,即可得到所 设计的滤波器。程序代码Ⅲ及注释如下: fs=2000I rp=3I 采样频率 %通带波纹 例2 有一个采样频率为1 000 Hz的信号 源,sin(307it)+0.5*sin(18O t)+0.2* sin(6OOTtt),应用约束最小二乘法设计一个带通 rs=40I f一[500 600]; a=[1 O]; %阻带波纹 %截止频率 %期望的幅度 滤波器,通带为[O.2 0.4],对该信号进行滤波。 该问题的解决,可先在Matlab中直接输入波 型函数产生信号源,再用约束最d ̄---乘法的fircls 函数设计滤波器,对其滤波。Fircls函数的设置 dev=[(10‘(rp/20)一1)/(10‘(rp/20)+1)10‘(一rs/ 20)]; [n,fo,ao。w]一remezord(f,a。dev,fs)I b—remez(n。fo,ao,w)I%调用最优设计法中remez函数 freqz(b。1,1024。fs) 参照表1。程序如下: t=0:1/1000:1l sig=sin(2 pi*15*t)+0.5*sin(2 pi*9O*t)+0.2 *sin(2 pi*300*t); 程序运行后,计算机输出该滤波器的幅频及 相频响应特性,如图1所示。 plot(t,sig); n一50; a一[O 1 O]; %输出信号源 设计滤波器,阶数定为5O f-[O 0.2 0.4 1]; up=[O.02 1.02 0.01]I lo=[一0.02 0.98—0.01] b=fircls(n,f.a,up,lo): newsig=fftfilt(b,sig)I figure ft=t(301:350); as=newsig(301:350); zns=interp(as,12); znt=interp(ft,12); 图1滤波器输出的幅频及相频响应特性 plot(znt.zns) 维普资讯 http://www.cqvip.com

256 长春工业大学学报(自然科学版) 第27卷 程序运行后,计算机将输出信号源的波形图 及滤波后的效果图,这两个图将在后面给出。下 面给出该程序中滤波器的幅频及相频响应特性, 如图2所示。 图2滤波器输出的幅频及相频响应特性性 3 利用FDATool界面的设计法 3.1 FDAtool界面简介 FDAtool(Filter Design f5.Analysis Too1)是 Matlab中专门用于滤波器设计和分析的工具。 界面的上半部分为特性区,用来显示滤波器的各 种特性。下半部分为参数设定区。 Filter Type(滤波器类型);选项包括Low— pass(低通)、Highpass(高通)、Bandpass(带通)、 Bandstop(带阻)和Differentiator(特殊)。 Design Method(设计方法):可选择IIR滤 波器或FIR滤波器,其中FIR中包括Equiripple (等波纹)、Least—Squares(最小二乘)及Window (窗函数)法等。 Filter Order(滤波器阶数):选项包括Speci— fy Order(指定阶数)和Minimum Order(最小阶 数)。 Frenquency Specification(频率设定):用于 设定频带的各个参数,其具体选项由前面所设计 的滤波器类型和设计方法决定。 Magnitude Specification(幅值设定):可以具 体定义幅值的衰减情况。 3.2利用FDAtool界面设计FIR数字滤波器方法 采用FDAtool界面对图l中的实例进行设 计,步骤如下: 首先在命令窗口键人FDAtool命令,调出 FDAtool界面,在Filter Type选项中选择Low— pass(低通);在Design Method中选择FIR滤波 器;接着在FIR中选择Equiripple(等波纹)法。 然后在Filter Order中选择Minimum Order(最 小阶数),这时,Matlab程序会根据所选择的滤波 器类型自动使用最小阶数。在Frenquency Spec— ification(频率设定)选项中,将-厂l(采样频率)、 。。(通带截止频率)、厂l (阻带截止频率)中分别 键入2 000 Hz,500 Hz,600 Hz。再对Magnitude Specification(幅度设定)进行设定,使A (通带 波纹)一3 dB;A。 (阻带衰减)=40 dB,最后点击 下方的Design Filter(滤波器设计)即可得到所设 计的FIR滤波器。设计完成后,可以通过菜单选 项Analysis来分析滤波器的幅频响应、相频响应 特性。点击Analysis中的Magnitude Response 和Phase Response对幅频和相频响应进行分析, 其输出的幅频及相频响应特性结果与图1相同。 例2的设置方法与上面基本相同,滤波器类 型选择Bandpass(带通),FIR选择constr—least, 阶数定为5O, -=0.2, =0.4,这里不再详述。 4基于信号处理的Simulink仿真 Matlab中提供了功能强大的Simulink仿真 软件。在Simulink环境下,可以对所设计的滤波 器性能进行仿真,实时观测滤波效果。Simulink 中包含大量数字信号处理的功能模块,可先调用 相应模块组成仿真框图。由于篇幅所限,文中以 与实际应用较接近的(例2)为例,对其进行性能 仿真,如图3所示。 图3 Simulink环境下的滤波仿真图 从图3可以看出,先调用三个正弦波模块,产 生sin(30nt),0.5*sin(180nt),0.2*sin(600nt) 三个基本波型,经过加法器(add)混合后产生波 源,将图3中所设计的滤波器(例2)导入FDA— tool中,信号经滤波后输送到Scope1中显示。点 击Simulink的start按钮,开始仿真。可以双击 Scope1,Scope图框,打开示波器界面放于屏幕左 上角,实时观测信号源波型及滤波后的效果。示 波器输出的波形如图4和图5所示。 维普资讯 http://www.cqvip.com

第3期 丁吉,等:基于Matlab的FIR数字滤波器的设计 257 计时,采用直接程序设计法和利用FDAtool界面 的设计法都可以快捷有效地完成滤波器的设计。 通过实例可以看出,这两种方法最大的优点是都 可以通过改变参数来得到新条件下滤波器的特 性,便于对比,进而能达到设计的最优化。但比较 起来,应用FDAtool避免了相对复杂的编程,较 为直观、方便,还可以直接调入到Simulink仿真 模块中进行实时仿真,具有更强的交互性。在对 图4输人信号波形图(scope) 数字滤波器的设计中,Matlab显示了其强大的计 算功能,必然在以后的数字信号处理中,展现更为 广阔的应用前景。 参考文献: 1-13丁玉美,高西全.数字信号处理FM].西安:西安电 子科技大学出版社,2005. [2]黄文梅.信号分析与处理[M].长沙:国防科技大 学出版社,2000. 图5滤波后输出信号波形图(scope1) -13]楼顺天,李伯菡.基于MATLAB的系统分析与设 计[M].西安:西安电子科技大学出版社,1999. [4]罗军辉,罗勇江.MATLAB在数字信号处理中的应 用[M].北京:机械工业出版社,2005. 从图5可以看出,有正弦波叠加所产生的信 号源,经带通滤波器滤波后,其它波形得到了有效 滤除,达到了期望的效果。 5 结 论 应用Matlab语言进行FIR数字滤波器的设 Design of FIR digital filter based on Matlab DING Ji。, JIANG Tao。 (1.CoLLege of Mechanical Science and Engineering,Jitin University。Changehun 130022。China ̄ 2.School of Mechatronie Engineering,Changehun University of Technology,Changehun 130012。China) Abstract:Two methods for designing the FIR digital filter based on Matlab are introduced here—— direct programming and the one using FDAtool interface.The forms of the function called from Matlab are demonstrated.The detailed steps for both the program method and the one with FDAtool interface in signal processing tool box,with an example,are given also.The digital filter is simulated under Simulink/Matlab. Key words:digital filter;Matlab;FIR;FDAtoo1. 

因篇幅问题不能全部显示,请点此查看更多更全内容