基于MATLAB的IIR数字滤波器设计与仿真
- 格式:pdf
- 大小:381.17 KB
- 文档页数:3
计算机与现代化2007年第6期JISUANJIYUXIANDAIHUA总第142期文章编号:10062475(2007)06011003
收稿日期:20061205作者简介:严小军(1972),男,陕西渭南人,陕西省利用亚洲开发银行贷款项目办公室工程师,西安工业大学计算机科学与工程学院硕士研究生,研究方向:计算机仿真;赵妮(1974),女,陕西周至人,西安工业大学计算机科学与工程学院讲师,研究方向:计算机仿真。基于MATLAB的IIR数字滤波器设计与仿真
严小军1,2,赵妮2,秦泓江3
(1.陕西省利用亚洲开发银行贷款项目办公室,陕西西安710006;2.西安工业大学计算机科学与工程学院,陕西西安710032;3.中国石油测井有限公司,陕西西安710021)摘要:依据IIR型数字滤波器设计的传统方法,利用MATLAB信号处理工具箱(SignalProcessingToolbox),分别用三种不同的方法快速有效地实现了对IIR数字滤波器的设计与仿真。给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDATool工具进行界面设计的详细步骤。进一步说明了如何利用MATLAB环境下的仿真软件Simulink对所设计的滤波器进行动态仿真。关键词:数字滤波器;MATLAB;无限长冲击响应;信号处理中图分类号:TP391文献标识码:ADesignandSimulationofIIRDigitalFilterBasedonMATLAB
YANXiaojun1,2,ZHAONi2,QINHongjiang3(1.ShanxiProvincialUsingADBsLoanProjectManagementOffice,Xian710006,China;2.ComputerScienceandEngineringCollege,XianTechnologicalUniversity,Xian710032,China;3.ChinaPetroleumLoggingCo.,Ltd,Xian710021,China)Abstract:InthispaperamethodofdesigningIIRdigitalfilterusingMATLABsignalprocessingtoolboxrapidlyandeffectivelyisintroduced.ThestepsofprogrammingwithMATLABlanguageandinterfacedesignusingMATLABsFDAToolboxarepresented,andmethodsofhowtodynamicallysimulatethedesignedfilterusingSimulinkofMATLABaregiven.Keywords:digitalfilter;MATLAB;infiniteimpactresponse;signalprocessing
0引言MATLAB是MATHWORK公司推出的一套面向科学和数值计算的可视化语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,是一个高度集成系统,具有友好的用户界面和良好的帮助功能。MATLAB自带的信号处理工具箱(signalprocessingtoolbox),具有强大的信号处理和分析功能,其中自带了许多函数,可以快速有效地实现数字滤波器的设计与仿真。数字滤波器根据其冲击响应函数的时域特性可以分为有限长冲击响应(FIR)和无限长冲击响应(IIR)。下面以IIR型数字滤波器的设计为例来具体说明MATLAB在数字滤波器设计及系统仿真方面的应用。1IIR数字滤波器的传统设计方法IIR数字滤波器具有无限宽的冲击响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。例如利用脉冲响应不变法设计IIR数字滤波器,其基本设计思路是直接设计一个数字滤波器并让它的时间特性逼近一个模拟滤波器。为了达到时间特性的最佳逼近,把模拟滤波器的冲击响应均匀取值,作为数字滤波器的单位脉冲响应,即:h(n)=h(t)|t-nT然后将h(n)通过z变换即求得H(z)。因此,脉冲响应不变法实际是时域取样法,整个过程是先根据给定的指标设计一个模拟滤波器,进而按下列变换的顺序,最后求得数字滤波器的系统函数H(z),即:H(s) h(t) h(n) H(z)在对滤波器进行实际设计时,整个过程运算量是很大的。设计完成后要对已设计的滤波器的频率响应进行校核,得到幅频相频响应特性,运算量也是很大的。通常,待设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断进行调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间2007年第6期严小军等:基于MATLAB的IIR数字滤波器设计与仿真111内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量,直观简便。2IIR数字滤波器的MATLAB设计2.1利用FDATool界面设计FDATool(FilterDesign&AnalysisTool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox)。FDATool界面为滤波器的设计提供了一个交互式的设计环境,用户可以根据对幅值和零极点图的设置,设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法,它们都具有标准的频率带宽结构。下面以模拟巴特沃斯滤波器设计数字低通滤波器为例,具体介绍如何利用FDATool界面设计IIR数字滤波器的方法。应用实例:设计通带截止频率为500Hz、阻带截止频率为600Hz、通带的最大衰减为1dB、阻带的最小衰减为50dB、采样频率为2000Hz的数字低通巴特沃斯滤波器。首先打开FDATool的设计界面,按照题目要求给出各项参数的设置,如图1所示。
图1FDATool设计界面图1中,在FilterType中选择带宽结构为Lowpass(低通滤波器);在DesignMethod选项中选择IIRButterworth(巴特沃斯滤波器);在FilterOrder项中选取该滤波器类型的阶数为MinimumOrder(最小阶数);在FrequencySpecifications项中给出设计滤波器的频率响应性能参数,采样频率Fs=2000Hz,通带截止频率Fpass=500Hz,阻带截止频率Fstop=600Hz;在MagnitudeSpecifications项中给出设计滤波器的幅值响应性能参数,通带的最大衰减Apss=1dB,阻带的最小衰减Astop=50dB。设置完以后点击DesignFilter即可得到所设计的IIR滤波器。通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。在整个设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。其它类型的FIR滤波器和IIR滤波器也都可以使用FDATool来设计。2.2程序设计法在MATLAB中,对各种滤波器的设计都有相应的计算振幅响应的函数,可以用来做滤波器的程序设计。对于上面的应用实例,也可以采用程序设计法利用模拟巴特沃斯滤波器来实现数字低通滤波器的设计。在前面已经介绍了脉冲响应不变法设计IIR数字滤波器的原理和函数的转换方法,下面给出采用脉冲响应不变法实现IIR数字低通滤波器设计的部分代码:%利用模拟巴特沃斯滤波器设计数字低通滤波器%脉冲响应不变法Wp=500;%Wp为通带截止频率Ws=600;%Ws为阻带截止频率Rp=1;%Rp为通带W(=0~Wp)中的最大衰减系数As=50;%As为阻带W>=Ws中的最小衰减系数Fs=2000;%Fs为采样频率%性能指标OmgP=2*p*iWp;OmgS=2*p*iWs;[N,OmgC]=buttord(OmgP,OmgS,Rp,As,s')';%选取模拟滤波器的阶数[cs,ds]=butter(N,OmgC,s')';%设计出所需的模拟低通滤波器[bz,az]=impinvar(cs,ds,Fs);%应用脉冲响应不变法把模拟滤波器转换为数字滤波器3Simulink仿真Simulink是MATLAB软件的扩展,是一个实现动态系统建模和仿真的软件包。它与MATLAB语言的主要区别在于:Simulink与用户交互接口是基于Windows的模型化图形输入,因而用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。所谓模型化图形输入是指Simulink提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型,进而进行仿真与分析。下面介绍如何调用Simulink中的功能模块来实现IIR数字滤波器仿真的方法,在仿真过程中,可以双击各功能模块,随时改变参数,以便获取不同状态下的仿真结果。本次设计是对带有白噪音的正弦波信号进行滤波处理,调用Simulink中的功能模块构成数字滤波器的仿真框图,如图2所示。在图2中,应用了Simulink环境中的SignalProcessingBlockset工具箱。该工具箱提供了一些滤波器模型,在设计时通过设置相应的参数即可得到需要的数字滤波器模型。对于输入信号,通过DSPSources模块中的一个白噪音信号模块RandomSource和一个正弦波信号模块SineWave,叠加在一起形成一个带有干扰信号的杂质波。对于滤波器的112计算机与现代化2007年第6期
图2IIR数字滤波器仿真图设计,通过FilterDesigns模块中的DigitalFilterDesign模块设计符合要求的低通滤波器,对带有干扰的原始信号进行滤波。此外,图2中还有两个信号输出模块,分别应用DSPSinks模块中的VectorScope模块输出滤波前和滤波后的波形图,VectorScope1用来输出带有干扰的原始信号,VectorScope用来输出经滤波器滤波之后的信号,以便在仿真运行的过程中可以动态地观察滤波效果。例如在滤波器设计模块中设置2阶低通IIR数字滤波器,采样频率为1000Hz。仿真运行后的结果如图3所示。从图3中可以看到,该数字滤波器仿真模型实现了对原始信号进行动态数字滤波的功能,滤除了原始波中的忙刺,得到了很好的正弦波信号,在数字信号传输和处理过程中对信号杂质作了清除,达到了滤波
器的设计要求。滤波前的波形滤波后的波形图3滤波前和滤波后的波形图4结束语利用MATLAB的强大运算功能,应用基于MATLAB的IIR数字滤波器设计方法可以快速有效地实现由软件组成的常规IIR数字滤波器的仿真,设计方便、快捷,极大地减轻了工作量,在设计过程中还可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化,为滤波器的设计和实现开辟了广阔的天地。