MATLAB实现IIR数字滤波器的仿真毕业论文.doc
本科毕业论文设计题目:MATLAB实现IIR数字滤波器的仿真系别:电子工程系班级:通信10A2姓名: 学号: 时间:2013年5月12日摘要3第1章 绪论41.1 MATLAB简介4第2章 数字滤波器52.1数字滤波器简介52.2 数字滤波器的实现方法72.3 数字滤波器的分类72.4 滤波器的性能指标7第三章 IIR数字滤波器93.1 IIR与FIR数字滤波器的比较93.2 IIR数字滤波器的结构103.3 IIR数字滤波器的设计分析123.4 IIR滤波器的设计步骤14第4章 IIR数字滤波器的仿真164.1 IIR数字滤波器的仿真类别164.2 IIR低通滤波器的仿真194.3 IIR高通滤波的仿真214.4 IIR带通滤波的仿真25第5章 结束语28参考文献29摘要 MATLAB是一种交互式、面向对象的程序设计语言,由美国的Clever Moler 博士于1980年开发。它集科技计算、图像处理、声音处理于一身,并提供了的Windows图形界面设计方法。它可以把计算结果很方便地用图形表示,使人们能直接了解其许多内在的本质。利用MATLAB 设计IIR数字滤波器,可以按照设计要求非常方便地调整设计参数,极大地减轻了设计的工作量,有利于滤波器设计的最优化。IIR数字滤波器的实现是数字信号处理中的重要组成部分,设计过程较复杂,牵涉到模型逼近,指标选择,计算机仿真,性能分析及可行性分析等一系列的工作,本文从数学软件MATLAB出发实现对IIR数字滤波器的仿真。在仿真中,可根据不同的阶数、精度和速度等要求对IIR 滤波器系数进行灵活的修改,以实现任意阶数的IIR 滤波器。关键词: MATLAB;IIR;数字滤波器;仿真;AbstractMATLAB is an interactive, object-oriented programming language, developed in 1980 by Dr. Clever Moler of the United States. It combines the technical computing, image processing, sound processing in one, and provides the Windows graphical interface design. Calculations it can be easily represented graphically, so that people can understand many of its inner nature. The use of the the MATLAB design IIR digital filter, in accordance with their design requirements and very easy to adjust the design parameters, greatly reducing the workload of the design, conducive to optimal filter design. IIR digital filter implementation is an important part of the digital signal processing, the design process is more complex, involves model approximation, the selection of indicators, computer simulation, performance analysis and feasibility analysis of a series of work, from the mathematical software MATLAB IIR digital filter simulation. In the simulation, according to the different order of accuracy and speed requirements of the IIR filter coefficients flexible modifications to any order IIR filter.Key words:MATLAB;IIR;Digital filter; simulation;第1章 绪论1.1 MATLAB简介MATLAB是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory(矩形实验室)的缩写。在MATLAB环境下,用户可以集成地进行程序设计,数值计算,图形绘制,输入输出,文件管理等各项操作。除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。MATLAB是一套高性能的数值分析和计算软件,其功能不断扩充,目前,Mathworks公司推出了18种工具箱。用户可以根据自己的工作任务,开发自己的工具箱。版本不断升级,1992年推出划时代的4.0版,1993年推出了可以配合Microsoft Windous使用的微机版,95年4.2版,97年5.0版,99年5.3版,5.X版无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,可以方便的浏览。至2001年6月推出6.1版,2002年6月推出6.5版,继而推出6.5.1版, 2004年7月MATLAB7和Simulink6.0被推出,目前的最新版本为7.1版。 MATLAB将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的科学及工程问题的分析计算和程序设计工具,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能,是具有全部语言功能和特征的新一代软件开发平台。 MATLAB 已发展成为适合众多学科,多种工作平台、功能强大的大型软件。在欧美等国家的高校,MATLAB已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。成为攻读学位的本科、硕士、博士生必须掌握的基本技能。在设计研究单位和工业开发部门,MATLAB被广泛的应用于研究和解决各种具体问题。在中国,MATLAB也已日益受到重视,短时间内就将盛行起来,因为无论哪个学科或工程领域都可以从MATLAB中找到合适的功能。 1.2 MATLAB功能 (1) 全新的开发环境GUIDE(GUI Development Environment):由早期的单一命令窗口发展为将一些常用的交互式工作界面高度的集中于操作桌面; (2) 在命令窗口增加了错误跟踪功能(error display message and abort function); (3) 提供了许多新的数值处理功能(numerical Treatment Techniques),更新了部分函数的功能和算法,增加了许多新函数; (4) 在图形窗口增加了曲线拟合、数据统计等交互工具;(Curve Fitting, Data Analyzing ) (5) 引入了类与对象及函数句柄等概念;(Object,Handle) 用户可以创建自己定义的类函数和函数句柄; (6) 改进了编辑/调试器的界面及功能; (Editor/Debugger)增加了行号和书签等功能; (7) 属性编辑器功能更强(Property Debugger),使用更方便; (8) 建立了一个与以前完全不同的图形用户界面(GUI)图形窗口,(Graphical Window)使用更加方便灵活; (9) 增加了虚拟现实工具箱,(Virtual Reality Toolbox)使用标准的虚拟现实建模语言(VRML)技术,可以创建由MATLAB和simulink环境驱动的三维动画场景; (10) 在应用程序接口方面增加了与Java的接口(Interface for Java),并为二者的数据交换提供了相应的程序库。第2章 数字滤波器2.1数字滤波器简介 滤波器是一种用来消除干扰杂讯的器件,与模拟滤波器相对应,在离散系统中广泛应用数字滤波器。它的作用是利用离散时间系统的特性对输入信号波形或频率进行加工处理。或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。数字滤波器一般可以用两种方法来实现:一种方法是用数字硬件装配成一台专门的设备,这种设备称为数字信号处理机;另一种方法就是直接利用通用计算机,将所需要的运算编成程序让通用计算机来完成,即利用计算机软件来实现。数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。数字滤波器和模拟滤波器有着相同的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型,与模拟滤波器相比,数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高(与系统字长有关)、稳定性好(仅运行在0与l两个电平状态)、灵活性强等优点。作为线形时不变系统的数字滤波器可以用系统函数来表示,而实现一个系统函数表达式所表示的系统可以用两种方法:一种方法是采用计算机软件实现;另一种方法是用加法器、乘法器、和延迟器等元件设计出专用的数字硬件系统,即硬件实现。不论软件实现还是硬件实现,在滤波器设计过程中,由同一系统函数可以构成很多不同的运算结构。对于无限精度的系数和变量,不同结构可能是等效的,与其输入和输出特性无关;但是在系数和变量精度是有限的情况下,不同运算结构的性能就有很大的差异。因此,有必要对离散时间系统的结构有一基本认识。一个数字滤波器可以用系统函数表示为:由这样的系统函数可以得到表示输入输出关系的常系数线性差分方程为: 可见数字滤波器的功能就是把输入序列x(n)通过一定的运算变换成输出序列y(n)。不同的运算处理方法决定了滤波器实现结构的不同。无限冲激响应滤波器的单位抽样响应h(n)是无限长的,其差分方程如(2-2)所示,是递归式的,即结构上存在这输出到输入的反馈,其系统函数具有(2-1)的形式,因此在z平面的有限区间(0<|Z|<)有极点存在。2.2 数字滤波器的实现方法(1)在通用的微型机上用软件来实现。软件可以由使用者自己编写或使用现成的。自IEEE DSP Comm.于1979年推出第一个信号处理软件包以来,国外的研究机构、公司也陆续推出不同语言不同用途的信号处理软件包。这种实现方法速度较慢,多用于教学与科研。(2) 用单片机来实现。目前单片机的发展速度很快,功能也很强依靠单片机的硬件环境和信号处理软件可用于工程实际,如数字控制、医疗仪器等。(3) 利用专门用于信号处理的DSP片来实现。DSP芯片较之单片机有着更为突出的优点,如内部带有乘法器、累加器,采用流水线工作方式及并行结构,多总线,速度快,配有适于信号处理的指令等,DSP芯片的问世及飞速发展,为信号处理技术应用于工程实际提供了可能。2.3 数字滤波器的分类(1)从大的方面分,滤波器分为模拟滤波器和数字滤波器。模拟滤波器:由电阻,电容,电感,及由原器件构成;实际中数字滤波器应用的比较广泛。数字滤波器:IIR,无限冲激响应滤波器,网络中有反馈回路实现无限冲击响应。FIR,有限冲激响应滤波器,网络中没有反馈回路。(2)从小的方面分:按所通过信号的频段分为低通、高通、带通和带阻滤波器四种。 2.4 滤波器的性能指标一般来说,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征。以低通滤波器特性为例,频率响应有通带、过渡带、阻带三个范围。在通带内: 1-Ap<=|<=1 |w|<=Wc 在阻带内: |<=Ast Wst<=|w|<=Wc 其中Wc 为通带截止频率,Wst为阻带截止频率,Ap为通带误差,Ast为阻带误差。如图2-4-1所示:图2-4-低通滤波器频率响应幅度特性的容限图与模拟滤波器类似,数字滤波器按频率特性划分为低通、高通、带通、带阻、全通等类型,由于数字滤波器的频率响应是周期的,周期为2。各种数字滤波器的幅度频率响应如图2-4-2所示:图2-4-2 各种理想数字滤波器的幅度频率响应第三章 IIR数字滤波器3.1 IIR与FIR数字滤波器的比较 (1) 选择数字滤波器是必须考虑经济问题,通常将硬件的复杂性、芯片的面积或计算速度等作为衡量经济问题的因素。在相同的技术指标要求下,由于IIR数字滤波器存在输出对输入的反馈,因此可以用较少的阶数来满足要求,所用的存储单元少,运算次数少,较为经济。例如,用频率抽样法设计一个阻带衰减为20dB的FIR数字滤波器,要33阶才能达到要求,而用双线性变换法只需45阶的切比雪夫IIR滤波器就可达到同样的技术指标。这就是说FIR滤波器的阶数要高510倍左右。(2) 在很多情况下,FIR数字滤波器的线性相位与它的高阶数带来的额外成本相比是非常值得的。对于IIR滤波器,选择性越好,其相位的非线性越严重。如果要使IIR滤波器获得线性相位,又满足幅度滤波器的技术要求,必须加全通网络进行相位校正,这同样将大大增加滤波器的阶数。就这一点来看,FIR滤波器优于IIR滤波器。(3) FIR滤波器主要采用非递归结构,因而无论是理论上还是实际的有限精度运算中他都是稳定的,有限精度运算误差也较小。IIR滤波器必须采用递归结构,极点必须在z平面单位圆内才能稳定。对于这种结构,运算中的舍入处理有时会引起寄生振荡。(4) 对于FIR滤波器,由于冲激响应是有限长的,因此可以用快速傅里叶变换算法,这样运算速度可以快得多。IIR滤波器不能进行这样的运算。(5) 从设计上看,IIR滤波器可以利用模拟滤波器设计的现成的闭合公式、数据和表格,可以用完整的设计公式来设计各种选频滤波器。一旦选定了已知的一种逼近方法(如巴特奥兹,切比雪夫等),就可以直接把技术指标带入一组设计方程计算出滤波器的阶次和系统函数的系数(或极点和零点)。FIR滤波器则一般没有现成的设计公式。窗函数法只给出了窗函数的计算公式,但计算通带和阻带衰减仍无显式表达式。一般FIR滤波器设计仅有计算机程序可资利用,因而要借助于计算机。(6) IIR滤波器主要是设计规格化、频率特性为分段常数的标准低通、高通、带通和带阻滤波器。FIR滤波器则灵活很多,例如频率抽样法可适应各种幅度特性和相位特性的要求。因此FIR滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性很广。而且,目前已经有很多FIR滤波器的计算机程序可供使用。表3-1-1、 两种滤波器特点比较FIR滤波器IIR滤波器设计方法一般无解析的设计公式,要借助计算机程序完成利用AF的成果,可简单、有效地完成设计设计结果可得到幅频特性(可以多带)和线性相位(最大优点)只能得到幅频特性,相频特性未知,如需要线性相位,须用全通网络校准,但增加滤波器阶数和复杂性稳定性极点全部在原点(永远稳定)无稳定性问题有稳定性问题阶数高低结构非递归系统递归系统运算误差一般无反馈,运算误差小有反馈,由于运算中的四舍五入会产生极限环 本文只说明IIR数字滤波器的设计3.2 IIR数字滤波器的结构(1)IIR滤波器的直接型结构(型、型),如图3-2-1优点:延迟线减少一半,可节省寄存器或存储单元;缺点:通常在实际中很少采用上述两种结构实现高阶系统,而是把高阶变成一系列不同组合的低阶系统(一、二阶)来实现。图3-2-1 直接型(2)IIR滤波器的串联型结构,如图3-2-2所示:特点:系统实现简单,只需一个二阶系统通过改变输入系数即可完成;极点位置可单独调整;运算速度块;各二阶网络的误差互不影响,总的误差小,对字长要求低。缺点: 不能直接调整零点,因多个二阶节的零点并不是整个系统函数的零点,当需要准确的传输零点时,级联型最合适。图3-2-2 串联型(3)IIR滤波器的并联型结构,如图3-2-3所示:优点: 简化实现,用一个二阶节,通过变换系数就可实现整个系统; 极、零点可单独控制、调整; 各二阶零、极点的搭配可互换位置,优化组合以减少运算误差; 可流水线操作。特点:IIR数字滤波器的基本特点缺点:二阶电平难控制,电平大易导致溢出,电平小则使信噪比减小。 图3-2-3 并联型3.3 IIR数字滤波器的设计分析一个数字滤波器可以用系统函数表示为: (3-1)由这样的系统函数可以得到表示系统输入与输出关系的常系数线形差分程为: (3-2) 可见数字滤波器的功能就是把输入序列x(n)通过一定的运算变换成输出序列y(n)。不同的运算处理方法决定了滤波器实现结构的不同。无限冲激响应滤波器的单位抽样响应h(n)是无限长的,其差分方程如(3-2)式所示,是递归式的,即结构上存在着输出信号到输入信号的反馈,其系统函数具有(3-1)式的形式,因此在z平面的有限区间(0<z<)有极点存在。 s - z 映射的方法有:冲激响应不变法、阶跃响应不变法、双线性变换法等。下面讨论双线性变换法。双线性变换法8是指首先把s 平面压缩变换到某一中介平面s1 的一条横带(宽度为2T,即从- T到T) ,然后再利用的关系把s1平面上的这条横带变换到整个z 平面。这样s 平面与z 平面是一一对应关系, 消除了多值变换性, 也就消除了频谱混叠现象。双线性变换法是指首先把s平面压缩变换到某一个中介平面s1的一条横带(宽度为2T即从-T到T),然后再利用的关系把s1平面上的这条横带变换到整个z平面。这样s平面与z平面是一一对应关系,消除了多值变换性,也就消除了频谱混叠现象。s 平面到z 平面的变换可采用 (3-3) (3-4)令 ,有: (3-5)从s1 平面到z 平面的变换,即 (3-6)代入上式,得到: (3-7) 一般来说,为使模拟滤波器的某一频率与数字滤波器的任一频率有对应关系,可引入代定常数c, (3-8)则 (3-9) 这种s 平面与z 平面间的单值映射关系就是双线性变换。有了双线性变换,模拟滤波器的数字化只须用进行置换。IIR滤波器的优点是可以利用模拟滤波器的设计结果,缺点是相位是非线性的,若需要线性相位,则要用全通网络进行校正。FIR 滤波器的优点是可方便的实现线性相位。IIR 数字滤波器可用一个n阶差分方程y(n)=brx(n-r)+aky(n-k),或用它的Z域系统函数: 对照模拟滤波器的传递函数: 不难看出,数字滤波器与模拟滤波器的设计思路相仿,其设计实质也是寻找一组系数b,a,去逼近所要求的频率响应,使其在性能上满足预定的技术要求;不同的是模拟滤波器的设计是在S平面上用数学逼近法去寻找近似的所需特性H(S),而数字滤波器则是在Z平面寻找合适的H(z)。IIR数字滤波器的单位响应是无限长的,而模拟滤波器一般都具有无限长的单位脉冲响应,因此与模拟滤波器相匹配。由于模拟滤波器的设计在理论上已十分成熟,因此数字滤波器设计的关键是将H(S)H(Z),即,利用复值映射将模拟滤波器离散化。已经证明,冲击响应不变法和双线性变换法能较好地担当此任,则在此基础上,数字滤波器的设计就可首先归结为模拟滤波器的设计了。3.4 IIR滤波器的设计步骤IIR数字滤波器的系统函数可以写成封闭函数的形式。IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。 IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。 在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器,使用ellipord函数设计出椭圆滤波器。与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。 IIR单位响应为无限脉冲序列FIR单位响应为有限的;iir幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上; fir幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变。这是很好的性质。 另外有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。目前,IIR数字滤波器的设计最通用的方法是借助于模拟滤波器的设计方法。模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询。因此,充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便,IIR 数字滤波器的设计步骤是:(1)按一定的规则将给出的数字滤波器的技术指标转换为模拟滤波器的技术指标;(2)根据转换后的技术指标设计模拟低通滤波器;(3)利用频率转换函数将得到的模拟滤波器转换为IIR低通数字滤波器;若所设计的数字滤波器是低通的,那么上述设计工作可以结束,若所设计的是高通、带通或者带阻滤波器,那么还有步骤:(4)利用域转换函数将IIR低通滤波器转换为所需技术指标的低通、高通、带通或带阻数字滤波器。简而言之:IIR的技术指标模拟滤波器的技术指标设计模拟低通滤波器H(s) IIR数字低通滤波器H1(z) IIR数字滤波器数字滤波器的设计步骤如图3-4-1所示。 数字滤波器技术指标指标参数变换模拟滤波器技术指标相应模拟滤波器设计模拟滤波器离散化数字滤波器图3-4-1 数字滤波器设计步骤在设计一个滤波器之前,必须首先确定一些技术指标。这些技术指标需要来制定。在很多实际应用中,例如语音或音频信号处理中,数字滤波器常用来实现选频操作。因此,指标的形式一般确定为频域中幅度和相位的响应。这是因为理想的频率响应是不可能实现的,由于它的幅度响应在频带之间是突变的,因而其单位抽样响应是非因果的、不可实现的,只能对其逼近。逼近所用的系统函数有无限长单位冲激响应(IIR)系统函数与有限长单位冲激响应(FIR)系统函数两种;以上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。第4章 IIR数字滤波器的仿真4.1 IIR数字滤波器的仿真类别IIR数字滤波器的仿真有两种,分别是程序仿真和软件仿真。这两种仿真模式的效果是一样的,都用同一个软件。它们的区别在于程序仿真要求编程序代码,而软技能仿真压球用到MATLAB的数据库,还需要自己创建滤波器、信号来源和信号的检测。在此,我们只对扯关系仿真进行说明。 首先用MATLAB做一个频率为50Hz,振幅为0.1的正弦波 :仿真图形如图4-1-1和图4-1-2所示:图4-1-1 MATLAB正弦波的仿真图4-1-2 MATLAB正弦波的仿真如上图所示,通过编写程序进行正弦波的仿真,可以清楚的看吹正弦波的参数情况,下面进行IIR各种滤波器的仿真。程序代码如下:clc;clear all;Frq=10; %信号频率值fs=1024; %采样速率和数据点数t=1/fs:1/fs:1024/fs;x=sin(2*pi*Frq*t);subplot(1,1,1);plot(x);ylabel('振幅');title('sin函数');xlabel('T/ms');4.2 IIR低通滤波器的仿真目的:用程序编写一个低通滤波器,振幅为0.5,频率在0.3以下的能通过,频率在0.3之上的大幅度衰减。仿真图形如图4-2-1和图4-2-2所示:图4-2-1 IIR低通滤波器的仿真图4-2-2 IIR低通滤波器的仿真由图可以看出:在左边乃小于0.3的频率都为通过啦,在0.3 频率之后迅速衰减,在0.6之后就几乎没有频率通过。程序代码如下:clear;fs=20;fpass=4;fstop=5;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=tan(wp/2);omegas=tan(ws/2);ep=sqrt(10(Ap/10)-1);es=sqrt(10(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap);omega0=omegap/ep(1/N);K=floor(N/2);for i=1:K theta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:K G(i)=omega02/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a1(i)=2*(omega02-1)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a2(i)=(1+2*omega0*cos(theta(i)+omega02)/(1-2*omega0*cos(theta(i)+omega02);endif K<(N/2) G0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=0:pi/300:pi;Hw2=1./(1+(tan(w/2)/omega0).(2*N);plot(w/pi,Hw2);title('IIR低通滤波器');xlabel('频率');ylabel('幅值');grid;4.3 IIR高通滤波的仿真目的:用程序编写一个低通滤波器,振幅为0.5,频率在0.6以上的能通过,频率在0.6之下的大幅度衰减,仿真图形如图4-3-1和图4-3-2所示:图4-3-1 IIR高通滤波器的仿真图4-3-2 IIR高通滤波器的仿真由图可以看出:在右边乃大于0.6的频率都为通过啦,在0.6 频率之前迅速衰减,在0.3之前就几乎没有频率通过。程序代码如下:clear;fs=20;fpass=5;fstop=4;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=cot(wp/2);omegas=cot(ws/2);ep=sqrt(10(Ap/10)-1);es=sqrt(10(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap);omega0=omegap/ep(1/N);K=floor(N/2);for i=1:K theta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:K G(i)=omega02/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a1(i)=-2*(omega02-1)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a2(i)=(1+2*omega0*cos(theta(i)+omega02)/(1-2*omega0*cos(theta(i)+omega02);endif K<(N/2) G0=omega0/(omega0+1);a0=-(omega0-1)/(omega0+1);endw=(0+eps):pi/300:pi;Hw2=1./(1+(cot(w/2)/omega0).(2*N);plot(w/pi,Hw2);clear;fs=20;fpa=2;fpb=4;fsa=1.5;fsb=4.5;Ap=0.0877;As=16.9897;wpa=2*pi*fpa/fs;wpb=2*pi*fpb/fs;wsa=2*pi*fsa/fs;wsb=2*pi*fsb/fs;c=sin(wpa+wpb)/(sin(wpa)+sin(wpb);omegap=abs(c-cos(wpb)/sin(wpb);omegasa=(c-cos(wsa)/sin(wsa);omegasb=(c-cos(wsb)/sin(wsb);omegas=min(abs(omegasa),abs(omegasb);ep=sqrt(10(Ap/10)-1);es=sqrt(10(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap);omega0=omegap/ep(1/N);K=floor(N/2);for i=1:K theta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:K G(i)=omega02/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a1(i)=4*c*(omega0*cos(theta(i)-1)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a2(i)=2*(2*c2+1-omega02)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a3(i)=-(4*c*(omega0*cos(theta(i)+1)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a4(i)=(1+2*omega0*cos(theta(i)+omega02)/(1-2*omega0*cos(theta(i)+omega02);endif K<(N/2) G0=omega0/(1+omega0);a0(1)=-2*c/(1+omega0);a0(2)=(1-omega0)/(1+omega0);endw=(0+eps):pi/300:pi;Hw2=1./(1+(c-cos(w)./(omega0*sin(w).(2*N);plot(w/pi,Hw2);title('IIR高通滤波器');xlabel('频率');ylabel('幅值');grid;4.4 IIR带通滤波的仿真目的:用程序编写一个低通滤波器,振幅为0.5,频率在0.2和0.4之间能通过,频率在0.2之下及0.4之上的的大幅度衰减,仿真图形如图4-4-1和图4-4-2所示:图4-4-1 IIR带通滤波器的仿真图4-4-2 IIR带通滤波器的仿真由上图可以看出,在0.2和0.4之间的频率都可以通过,在频率在0.2之下及0.4之上的的大幅度衰减之后,几乎不能通过,程序代码如下所示:clear;fs=20;fpa=2;fpb=4;fsa=1.5;fsb=4.5;Ap=0.0877;As=16.9897;wpa=2*pi*fpa/fs;wpb=2*pi*fpb/fs;wsa=2*pi*fsa/fs;wsb=2*pi*fsb/fs;c=sin(wpa+wpb)/(sin(wpa)+sin(wpb);omegap=abs(c-cos(wpb)/sin(wpb);omegasa=(c-cos(wsa)/sin(wsa);omegasb=(c-cos(wsb)/sin(wsb);omegas=min(abs(omegasa),abs(omegasb);ep=sqrt(10(Ap/10)-1);es=sqrt(10(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap);omega0=omegap/ep(1/N);K=floor(N/2);for i=1:K theta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:K G(i)=omega02/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a1(i)=4*c*(omega0*cos(theta(i)-1)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1:K a2(i)=2*(2*c2+1-omega02)/(1-2*omega0*cos(theta(i)+omega02);endfor i=1: