1、淮南师范学院2013届本科毕业论文21毕业论文题 目:基于MATLAB的IIR滤波器设计与仿真学生姓名: 米婷 学生学号: 0908030224 系 (院): 电气信息工程学院 专 业: 电子信息工程 届 别: 2013 指导教师: 张大雷 完成时间: 2013年5月4日 基于MATLAB的IIR滤波器设计与仿真 学生:米婷指导教师:张大雷淮南师范学院 电气信息工程学院 摘 要:生活中由于信号噪声无处不在,而观测和控制都需要真实的信号,所以我们使用到了滤波器。很多信号分析都是基于滤波器而进行的,而数字滤波器是通过数值运算实现滤波,具有处理精度高、稳定、灵活、不存在阻抗匹配问题,可以实现模拟滤波
2、器无法实现的特殊滤波功能。数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,精度高,而且能够保留一些模拟滤波器的优良特性,因此应用很广。Matlab软件以矩阵运算为基础,把计算、可视化及程序设计有机融合到交互式工作环境中,并且为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。尤其是Matlab中的信号处理工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。本文首先介绍了数字滤波器的概念,分类以及设计要求。关键词:IIR;滤波器;MATLAB;Si
3、mulink Design and Simulation of IIR filter based on MATLAB Student:Ting MiAdvisor:Dalei ZhangHuainan normal university Electrical and information engineering department Abstract:Because the signal noise of life everywhere, but the observation and control signals have to be true, so we use to filter.
4、 many signal analysis is based on filters, and the digital filter is realized through numerical computation, digital filters filter with high precision, stability and flexibility, dont exist, can realize the impedance matching simulating the special filter cannot achieve filter function. Digital fil
5、ter according to its impulse response function and characteristics of the time can be divided into two kinds, namely the infinite impulse response (IIR) digital filter and finite impulse response (FIR digital filters). The order of realizing IIR filter is used, low and high efficiency less storage u
6、nit, high precision, and can keep some simulation characteristics of filter, so it is widely used. Matlab software based on matrix computation, the calculation, visualization and program design of organic integration to interactive environment for digital filter, and the research and application of
7、provides an intuitive, efficient and convenient tool. Especially in the Matlab signal processing to all areas of research toolbox personnel can easily for scientific research and engineering application. This paper introduces the concept of digital filter, classification and design requirements.Key
8、words: IIR; Filter; MATLAB; Simulink 前言数字信号处理(digital signal processing,DSP)是从20世纪60年代以来,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。数字信号处理是把信号用数字或符号表示的序列,通过计算机或通用(专用)信号处理设备,用数字的数值计算方法处理(例如滤波、变换、压缩、增强、估计、识别等),以达到提取有用信息便于应用处理的目的。数字信号处理系统有精度高、灵活性高、可靠性高、容易大规模集成、时分复用、可获得高性能指标、二维与多维处理等特点。正是由于这些突出的特点,使得它在通信、语音、雷达、地震测
9、报、声呐、遥感、生物医学、电视、仪器中得到愈来愈广泛的应用。在数字信号处理中起着重要的作用并已获得广泛应用的是数字滤波器(DF,Digital Filter),根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应IIR(Infinite Impulse Response)滤波器和有限冲激响应FIR(Finite Impulse Response)滤波器。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来结算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的有点,使MATLAB成为一个强大的
10、数学软件,在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。1 数字滤波器概述数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:Y(e)=X(e)H(e)其中Y(e)、X
11、(e)分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),H(e)是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。输入序列的频谱X(e)经过滤波后X(e)H(e),因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择H(e),使得滤波后的X(e)H(e)满足设计的要求,这就是数字滤波器的滤波原理。数字滤波器根据其冲击响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型:y(n)=+来实现,其差分方程为:H(z)=系统函数为:设计IIR滤波器的
12、任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。由于电子计算机技术和大规模集成电路的发展,数字滤波器已经可用计算机软件实现,也可用大规模集成数字硬件实时实现。数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号(对应数字频率)转换为所要求的输出离散时间信号的特定功能装置)。应用数字滤波器处理模拟信号(对应模拟频率)时,首先须对输入
13、模拟信号进行限带、抽样和模数转换。为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。滤波器的种类很多,分类方法也不同。从处理信号分:经典滤波器、现代滤波器从实现的网络结构方法上分:FIR(有限脉冲响应)、IIR(无限脉冲响应)从功能上分:低通、高通、带通、带阻从设计方法上来分:Butterworth(巴特沃斯),C
14、hebyshev(切比雪夫),椭圆函数(Ellipse),贝塞尔(Bessel)等等。数字滤波器与模拟滤波器的区别数字滤波器的传输函数都是以2为周期的,滤波器的低通频带处于2的整数倍处,而高频频带处于的奇数倍附近。数字滤波器的技术要求:H(e)=其中:幅频特性 相频特性2 IIR数字滤波器设计方法就广义而言,数字滤波器是一个用有限精度算法实现的线性移不变时间系统。设计实现一个数字滤波器一般包括四个基本步骤:1 按照实际需要确定滤波器的性能要求。比如确定所设计的滤波器是低通、高通、带通还是带阻,截止频率是多少,阻带的衰减有多大,通带的波动是多少等;2 用一个因果稳定的系统函数去逼近这个性能要求;
15、(IIR,FIR)3 用一个有限精度的算法去实现这个系统函数;(运算结构)4 实际的技术实现。(通用计算机软件或专用数字滤波器硬件)IIR数字滤波器的设计方法图1 IIR数字滤波器设计方法数字滤波器(Digital Filter)是指输入、输出都是离散时间信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。数字滤波器在数字信号处理中起着非常重要的作用,在信号的过滤、检测与参数的估计等方面,是使用最为广泛的一种线性系统。实现数字滤波器的方法有两种,一是采用计算机软件进行,就是把所要完成的工作通过程序让计算机来实现;二十设计专用的数字处理硬件。这个地方主要用到的就是
16、第一种方法。即是用Mafiab提供的信号处理工具箱来实现数字滤波器。Matlab信号处理工具箱提供了丰富的设计方法,可以使得繁琐的程序设计简化成函数的调用,只要以正确的指标参数调用函数,就可以正确快捷的得到设计结果。IIR数字滤波器的最通用的方法是借助于模拟滤波器的设计方法。模拟滤波器设计已经有了相当成熟的技术和方法,有完整的设计公式,还有比较完整的图表可以查询,因此设计数字滤波器可以充分利用这些丰富的资源来进行。对于IIR数字滤波器的设计具体步骤如下:(1)按照一定的规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。(2)根据转换后的技术指标设计模拟低通滤波器G(s)(G(s)
17、是低通滤波器的传递函数)。(3)再按照一定的规则将G(s)转换成H(z)(H(z)是数字滤波器的传递函数)。若设计的数字滤波器是低通的,上述的过程可以结束,若设计的是高通、带通或者是带阻滤波器,那么还需要下面的步骤:将高通。带通或带阻数字滤波器的技术指标转换为低通模拟滤波器的技术指标,然后设计出低通G(s),再将G(s)转换为H(z)。Matlab信号工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用这些函数就可以很方便的对滤波器进行设计。这里选取巴特沃斯法、切比雪夫、切比雪夫、椭圆法四种方法进行比较。给出用上述方法设计数字滤波器的函数如下:Butterworth滤波器:N,Wn=but
18、tord(Wp,Ws,Rp,Rs)b,a=butter(N,Wn)b,a=butter(N,Wn,ftype)h,f=freqz(b,a,n,Fs)其中:Wp表示通带截止频率;Ws表示阻带截止频率;Rp表示通带纹波系数;Rs表示阻带纹波系数;N表示滤波器最小阶数;Wn表示截止频率。b,a分别表示阶次位N+1的数字滤波器系统传递函数的分子和分母多项式系数向量;Fs位采样频率;n为在区间0 Fs频率范围内选取的频率点数,f记录频率点数。N取2的幂次方,可以提高运算的速度,因为freqz函数采用基2的FFT算法。Ftype=high时,位高通滤波器;ftype=bandpass时,位带通滤波器;ft
19、ype=stop时,位带阻滤波器。Chebysheve型滤波器:N,Wn=cheb1ord(Wp,Ws,Rp,Rs)b,a=cheby1(N,Rp,Wn)b,a=cheby1(N,Rp,Wn,ftype)h,f=freqz(b,a,n,Fs)Chebysheve型滤波器:N,Wn=cheb2ord(Wp,Ws,Rp,Rs)b,a=cheby2(N,Rs,Wn)b,a=cheby2(N,Rs,Wn,ftype)h,f=freqz(b,a,n,Fs)椭圆滤波器:N,Wn=ellipord(Wp,Ws,Rp,Rs)b,a=ellip(N,Rp,Rs,Wn)b,a=ellip(N,Rp,Rs,Wn,f
20、type)h,f=freqz(b,a,n,Fs)比较结果分析通过对各种类型的滤波器通过不同方法进行设计,可以使一些结论得到验证。利用Butterworth滤波器、Chebysheve型滤波器、Chebysheve型滤波器、椭圆滤波器都可以进行低通、高通、带通、带阻滤波器的设计,但是各有特点。Butterworth滤波器通带内的幅频响应曲线能得到最大限度的平滑,但牺牲了截止频率的坡度。Chebysheve型滤波器通带内等波纹,阻带内单调;Chebysheve型滤波器通带内单调,然而阻带内等波纹;椭圆滤波器阻带和通带内都是等波纹的,但下降的坡度更大,而且可以以更低的阶数实现和其他两类滤波器一样的性
21、能指标。3 IIR数字滤波器的特点IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时候,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。IIR数字滤波器的相位特性不好控
22、制,对相位要求较高时,需加相位校准网络。在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器,使用ellipord函数设计出椭圆滤波器。下面主要介绍前连个函数的使用。与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器的阶数,在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。IIR单位响应为无限脉冲序列FIR单位响应为有限的。II
23、R幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上。FIR幅频特性精度较至于IIR低,但是线性相位,就是不同频率分量的信号经过FIR滤波器后他们的时间差不变。另外有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小。4 MATLAB概述MATLAB代表Matrix Laboratory,它的首创者是美国新墨西哥大学计算机系的系主任Cleve Moler博士,他在教授线性代数课程发现其他语言很不方便,便构思开发了MATLAB。最初采用FORTRAN语言编写,20世纪80年代后出现了MATLAB第二版,全部采用C语言编写。MATLAB是一种高性能的技术计算语
24、言。强大的数值计算和工程运算功能符号计算功能强大的科学数据可视化能力多种工具箱MATLAB可以进行:数学计算、算法开发、数据采集建模、仿真、原型数据分析、开发和可视化科学和工程图形应用程序的开发,包括图形用户界面的创建。MATLAB广泛应用于:数值计算、图形处理。符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。MATLAB的构成:MATLAB开发环境:进行应用研究开发的交互式平台MATLAB数学与运算函数库:用于科学计算的函数MATLAB语言:进行应用开发的编程工具图形化开发:二维、多维图形开发的工具应用程序接口(API)用于与其他语言混编面向专门领域的工具箱:小波工具箱、神
25、经网络工具箱、信号处理工具箱、图形处理工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同应用的工具箱。MATLAB语言特点:MATLAB具有用法简单、灵活、程式结构性强、延展性好等优点,已经逐渐成为科技计算、视图交互系统和程序中的首选语言工具。特别是它在线性代数、数理统计、自动控制、数字信号处理、动态系统仿真等方面表现突出,已经成为科研工作人员和工程技术人员进行科学研究和生产实践的有利武器。MATLAB的技术特点:语言简洁紧凑,语法限制不严,程序设计自由度大,可移植性好。MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。MATLAB
26、以矩阵为居处,不需要预先定义变量和矩阵(包括数组)的位数,可以方便地进行矩阵的算术运算、关系运算和逻辑运算等。而且MATLAB有特殊矩阵专门的库函数,可以高效地求解诸如信号处理、图像处理、控制等问题。运算符、库函数丰富。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序,每一个工具箱都是为某一类学科专业和应用而定制的。MATLAB包括两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互的功能;而学科性工具箱是
27、专业性比较强的,如:control,toolbox,signl proceessingtoolbox,commumnicationtoolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序就可直接进行高、精、尖的研究。强大的数值(矩阵)运算功能。MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+。在计算要求相同的情况下,使用MATLAB的
28、编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵、特征向量、快速傅里叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。界面友好、编程效率高。MATLAB程序书写形式自由,被称为“草稿式”语言,这是因为其函数名和表达更接近我们书写计算公式的思维表达方式。编写MATLAB程序犹如在草稿纸上排列公式和求解问题,因此可以快速地验证工程技术人员的算法。此外MATLAB还是一种
29、解释性语言,不需要专门的编译器。具体的说,MATLAB运行时,可直接在命令行输入MATLAB语句,系统立即进行处理,完成编译、连接和运行的全过程。利用丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。图形功能强大。MATLAB具有非常强大的以图形化显示矩阵和数组的能力,同时它能给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括二维和三维的可视化、图像处理、动画等高层次的专业图形的高级绘图函数(例如图形的光照处理、色度处理以及四维数据的表现等),又包括一些可以让用户灵活控制图形特点的低级绘图命令,可以利用MATLAB的句柄图形技术创建图形用户界面。同时对一
30、些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善。MATLAB功能特点:MATLAB将一个优秀软件的易用性与可靠性、通用性与专业性、一般目的的应用与高深的科学技术应用有机的结合。扩展性强。MATLAB不仅有着丰富的库函数,在进行复杂的数学运算时可以直接调用。而且用户还可以根据需要方便地编写和扩充新的函数库。通过混合编程用户可以方便地在MATLAB环境中调用其他用FORTRAN或者C语言编写的代码,也可以再C语言或者FORTRAN语言程序中调用MATLAB计算引擎来执行MATLA
31、B代码。可靠的容错功能、应用灵活的兼容与接口功能。MathWorks公司开发的Matlab Notebook成功地将Microsoft Word和Matlab结合在一起,为文字处理、科学计算和工程设计营造了一个完美的工作环境。Matlab的Notebook实现Word和Matlab无缝连接使Word不仅兼容原有编辑能力而且又增加了Matlab强大的计算和绘图能力,在科学研究、工程设计和教学方面都有很好的实用价值,已经远远的把MathCAD抛在后面。Matlab Notebook可以在word中随时修改计算命令,随时计算并生成图像返回。信息量丰富的联机检索功能。新版本的Matlab可以利用Mat
32、lab编译器和C/C+数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写可以和MATLAB进行交互的C或C+语言程序。另外,MATLAB网页五福程序还容许在Web应用中使用自己的Matlab数学和图形程序。综上,MATLAB是一种基于矩阵运算、具有强大的数值运算和数据处理功能的高级编程语言,广泛应用于信号分析、语言分析、优化设计等领域,在复杂的算法方面表现出其他语言难以比拟的优势。MATLAB的开放性。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。5 SIM
33、ULINK所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考虑模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真
34、和综合分析的集成环境。在该环境中无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink可以用连续采样时间、离散采样时间或
35、两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统建模,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。构架在Simulink基础之上的其他产品扩展了Simulink多领域建模功能,
36、也提供了用于设计、执行、验证和确认任务的相应工具。Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号参数和测试数据的定义。特点丰富的可扩充的预定义模块库交互式的图形编辑器来组合和管理直观的模块图以设计功能的层次性来分割模型,实现对复杂设计的管理通过Model Explorer导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码提供API用于与其他仿真程序的连续或与手写代码集成使用Embedded MATLAB模块在Simulink和嵌入式系统执行中调用MATLAB算法使用定步长或变步
37、长运行仿真,根据仿真模式(Normal,Accelerator,Rapid Accelerator)来决定以解释性的方式运行或以编辑C代码的形式来运行模型图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据模型分析和诊断工具来保证模型的一致性,确定模型中的错误6 IIR数字滤波器设计方法IIR数字滤波器是一种离散时间系统,其系统函数为H(z)=假设MN时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数和和,它是数学上的一种逼近问题,
38、即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在Z平面上去逼近,就得到数字滤波器。IIR数字滤波器的设计步骤IIR数字滤波器的设计一般有两种方法:一种是借助模拟滤波器的设计方法进行。一种直接在频率或者时域内进行,由于需要解联立方程,设计时需要计算机做辅助设计。模拟滤波器设计方法主要有脉冲响应不变法和双线性变换法。脉冲响应不变法的最大缺点是有频率响应的混叠效应。所以,脉冲响应不变法只适用于限带的模拟滤波器,而且高频衰减越快,混叠效应越小。双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。用MATLAB进行数字滤波器
39、的设计步骤如下:(1)将设计指标归一化处理。如果采用双线性变换法,还需进行预畸变。(2)根据归一化频率,确定最小阶数N和频率参数W。可供选用的阶数择函数有:buttord,cheb1ord,cheb2ord,ellipord等。(3)运用最小阶数N设计模拟低通滤波器原型。模拟低通滤波器的创建函数有:buttap,cheb1ap,cheb2ap,ellipap和besslap,这些函数输出的是零极点式形式,还要用zp2tf函数转换成分子分母多项式形式。(4)根据第2步的频率参数W,模拟低通滤波器原型转换模拟低通、高通、带通、带阻滤波器,可用函数分别是:lp2lp,lp2hp,lp2bp,lp2b
40、s。(5)运用脉冲响应不变法或双线性变法把模拟滤波器转数字滤波器,调用的函数是impinvar和bilinear。脉冲响应不变法适用于采样频率大于4倍截止频率的锐截止低通带通滤波器,而双线性变换法适合于相位特性要求不高的各型滤波器。(6)根据输出的分子分母系数,调用函数buttord计算N和wc,有系数向量可以写出数字滤波器系统函数Z,再用freqz函数验证设计结果。用脉冲响应不变法设计的巴特沃斯数字低通滤波器的M程序如下:fp=2100;fs=8000;Fs=20000;Rp=0.5;Rs=30;T=1/Fs; %设计指标W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率N,Wn
41、=buttord(W1p,W1s,Rp,Rs,s);%确定butterworth的最小介数N和频率参数Wnz,p,k=buttap(N); %设计模拟低通原型的零极点增益参数bp,ap=zp2tf(z,p,k); %将零极点增益转换成分子分母参数bs,as=lp2lp(bp,ap,Wn*pi*Fs);%将低通原型转换为模拟低通bz,az=impinvar(bs,as,Fs); %用脉冲响应不变法进行模数变换sys=tf(bz,az,T); %给出传输函数H(Z)H,W=freqz(bz,az,512,Fs); %生成频率响应参数subplot(2,1,1);plot(W,20*log10(ab
42、s(H); %绘制幅频响应grid on; %加坐标网格xlabel(频率/Hz); ylabel(振幅/dB);subplot(2,1,2); plot(W,abs(H); grid on; xlabel(频率/Hz); ylabel(振幅/H);运行后的波形如下:图2 典型滤波器在MATLAB上运行波形运行结果:N=4bz=0.0000 0.0999 0.1914 0.0252az=1.0000 -1.4336 1.0984 -0.4115 0.0627用双线性变换法设计椭圆数字低通滤波器的M程序如下:fs=20000;wp=2*pi*2100/fs; ws=2*pi*8000/fs; R
43、p=0.5; Rs=30; Ts=1/fs; Wp=2/Ts*tan(wp/2);Ws=2/Ts*tan(ws/2); %按频率转换公式进行转换 N,Wn=ellipord(Wp,Ws,Rp,Rs,s); %计算模拟滤波器的最小阶数 z,p,k=ellipap(N,Rp,Rs);%设计模拟原型滤波器 Bap,Aap=zp2tf(z,p,k); %零点极点增益形式转换为传递函数形式 b,a=lp2lp(Bap,Aap,Wn); %低通转换为低通滤波器的频率转化 bz,az=bilinear(b,a,fs); %运用双线性变换法得到数字滤波器传递函数 H,f=freqz(bz,az,512,fs)
44、; subplot(2,1,1);plot(f,20*log10(abs(H); title(N=2 频率响应); grid on; xlabel(频率/Hz); ylabel(振幅/dB); subplot(2,1,2); plot(f,abs(H); grid on; xlabel(频率/Hz); ylabel(振幅/H);运行后的波形如下:图3 双线性变换法设计的椭圆数字低通滤波器波形运行结果:N=2bz=0.1213 0.1662 0.1213az=1.0000 -0.9889 0.4218IIR数字滤波器的直接设计法除了典型设计以外,MATLAB信号处理工具箱提供了几个直接设计IIR
45、数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便。Chebyshev I型的M程序如下:Fs=20000; %抽样频率20KHzFlp=2100; Fls=8000;Wp=2*Flp/Fs; %归一化的通带截止频率Ws=2*Fls/Fs; %归一化的阻带截止频率Rp=0.5; %通带最大衰减(单位:dB)Rs=30; %阻带最小衰减(单位:dB)N,Wn=cheb1ord(Wp,Ws,Rp,Rs); %返回最小阶数和截止频率b,a=cheby1(N,Rp,Wn); %返回H(z)的分子分母系数hw,w=freqz(b,a);subplot(2,1,1);plot(w/p
46、i,20*log10(abs(hw);grid on;xlabel(/);ylabel(幅度(dB))title(切比雪夫I型幅频响应);subplot(2,1,2);plot(w/pi,abs(hw);grid on;xlabel(/);ylabel(幅度(H));运行后的波形如下:图4 Chebyshev型运行波形运行结果:N=2b=0.1007 0.2014 0.1007a=1.0000 -0.9872 0.4140Chebyshev II型M程序如下:Fs=20000; %抽样频率20KHzFlp=2100; Fls=8000;Wp=2*Flp/Fs; %归一化的通带截止频率Ws=2*Fls/Fs; %归一化的阻带截止频率Rp=0.5; %通带最大衰减(单位:dB)Rs=30; %阻带最小衰减(单位: