大学毕业论文-—iir滤波器的设计与实现.doc
长沙学院 CHANGSHA UNIVERSITY毕业设计(论文)资料设计(论文)题目: IIR滤波器的设计与实现 系部:专 业:学 生 姓 名:班 级:学号 2005043216 指导教师姓名:职称 教 授 职称 助 教 最终评定成绩 目 录第一部分 毕业论文一、 毕业论文第二部分 外文资料翻译一、外文资料原文二、外文资料翻译第三部分 过程管理资料一、 毕业设计(论文)课题任务书二、 本科毕业设计(论文)开题报告三、 本科毕业设计(论文)中期报告四、 毕业设计(论文)指导教师评阅表五、 毕业设计(论文)评阅教师评阅表六、 毕业设计(论文)答辩评审表 2009 届本科生毕业设计(论文)资料第一部分 毕业论文(2009届)本科生毕业论文IIR滤波器的设计与实现系部: 电子与通信工程系 专 业: 通 信 工 程 学 生 姓 名: 何 双 喜 班 级: 05通信2 学号 2005043216 指导教师姓名: 刘光灿 职称 教 授 王路露 职称 助 教 最终评定成绩 2009 年 6月 长沙学院本科生论文IIR滤波器的设计与实现系 (部):电子与通信工程系专 业:通 信 工 程 学 号:2005043216 学生姓名:何 双 喜 指导教师:刘 光 灿 教 授 王 路 露 助 教 2009年 6月 长沙学院毕业设计(论文) 摘 要IIR数字滤波器是数字滤波器中非常重要的一类滤波器,因其可以较低的阶次获得较高的频率选择特性而得到广泛应用。本文研究了IIR数字滤波器的常用设计方法,即冲激响应不变法和双线性变换法。在分析各种IIR实现结构的基础上,从理论分析和仿真情况确定了所要设计的IIR数字滤波器的实现结构以及中间数据精度。在此基础上,使用MATLAB提供的GUI工具,实现方便用户使用的数字滤波器交互界面的开发。此设计扩展性好,便于调节滤波器的性能,可以根据不同的要求在MATLAB上加以实现。关键词:IIR数字滤波器,MATLAB,GUIABSTRACTIIR digital filter digital filter is very important for a class of filters, because of their lower order to higher frequency selective properties have been widely used. In this paper, the IIR digital filter design theory and methods used, that is, the same impulse response method and bilinear transformation method. In the analysis of IIR structure, based on theoretical analysis and simulation to establish the design of IIR digital filter structure, as well as intermediate data accuracy. On this basis, the use of GUI tools provided by MATLAB to achieve user-friendly interface of the digital filter development, user-friendly. Good scalability of this design, easy to adjust the performance of filters can be based on different requirements to be in the realization of MATLAB.Keywords: IIR digital filter, MATLAB, GUI目 录摘 要IABSTRACTII第1章 绪论11.1 引言11.2 IIR滤波器简介11.3 IIR滤波器的研究意义31.4 课题研究方法31.5 论文结构及研究内容3第2 章 IIR滤波器设计相关工具和技术42.1系统仿真软件(MATLAB)42.2 MATLAB的GUI工具52.3 GUI界面设计的总结:62.3.1.使用GUIDE帮助创建GUI62.3.2 使用控件72.3.3写回调函数 CallBack72.3.4句柄图形之间的层次关系8第3章 IIR滤波器的设计过程103.1 两种常用的设计IIR低通滤波器方法103.1.1脉冲响应不变法103.1.2 双线性变换法113.2 利用MATLAB设计巴特沃斯IIR低通滤波器123.3 用GUI设计用户界面13第四章 IIR滤波器的具体实现184.1 仿真结果184.2 结果分析21结 论22参考文献23致 谢24III第1章 绪论1.1 引言 面对庞杂繁多的原始信号,如何提取所需信号、抑制不需要的信号?这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点,在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的GUI工具进行界面设计的详细步骤。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。1.2 IIR滤波器简介首先认识滤波器的原理:数字滤波器的原理有多种,取平均值是其中的一种。取平均值就是滤除任何有具有频率的变化分量的信号。数字滤波器还可根据不同原理编制专门的程序,对采集的信号进行特殊的计算来滤除特定频率的信号。 模拟滤波器的原理1主要是利用电容器对高频信号的低阻抗、对低频信号的高阻抗和电感对对低频信号的低阻抗、对高频信号的高阻抗的特性,滤除特定频率的信号。数字滤波器在各种数字信号处理中发挥着十分重要的作用, 数字滤波器设计一直是信号处理领域的重要研究课题。常用的数字滤波器有FIR滤波器和IIR滤波器,其中IIR数字滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现、较好的选频特性等特点,得到了广泛应用。IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法5。滤波器是一种特别重要的线性时不变系统。从广义上讲,任何对某些频率(相对于其他频率来说)进行修正的系统称为滤波器。严格的讲,滤波器是一个能让某些频率通过而完全拒绝其他频率成分的系统。数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,滤波器的功能实现实际上是通过大量的加法运算和乘法运算完成的。下面从几个方面分别介绍IIR滤波器: IIR数字滤波器的基本结构:.直接型:按给出的差分方程直接实现。.级联型:将系统函数H(z)因式分解为较低的二阶节的乘积,每个双二阶用一个直接型实现,整个系统用双二阶的级联实现。.并联型:将系统函数H(z)因式分解为双二阶之和,每个双二阶用一个直接型实现,整个系统函数作为二阶节的并联网络实现。 系统的传递函数对IIR数字滤波器的差分方程的一般形式 (1.1)两边同时进行双边z变换得: (1.2)得IIR数字滤波器的传递函数: (1.3) IIR数字滤波器的分类:如下面图1.1:图1.1 滤波器分类滤波器的参数理想滤波器是不存在的,在实际滤波器的幅频特性图中,通带和阻带之间应没有严格的界限。在通带和阻带之间存在一个过渡带。在过渡带内的频率成分不会被完全抑制,只会受到不同程度的衰减8。当然,希望过渡带越窄越好,也就是希望对通带外的频率成分衰减得越快、越多越好。因此,在设计实际滤波器时,总是通过各种方法使其尽量逼近理想滤波器。理想滤波器的特性只需用截止频率描述,而实际滤波器的特性曲线无明显的转折点,两截止频率之间的幅频特性也非常数,故需用更多参数来描述。a.特征频率 滤波器的频率参数主要有:通带截频为通带与过渡带的边界点,在该点信号增益下降到规定的下限。阻带截频为阻带与过渡带的边界点,在该点信号衰耗下降到规定的下限。转折频率为信号功率衰减到1/2(约3dB)时的频率,在很多情况下,也常以作为通带或阻带截频。当电路没有损耗时,固有频率,就是其谐振频率,复杂电路往往有多个固有频率。 b.增益与衰耗7 滤波器在通带内的增益并非常数。对低通滤波器通带增益一般指=0时的增益;高通指时的增益;带通则指中心频率处的增益。对带阻滤波器,应给出阻带衰耗,衰耗定义为增益的倒数。通带增益变化量指通带内各点增益的最大变化量,如果以dB为单位,则指增益dB值的变化量。c.阻尼系数与品质因数 阻尼系数是表征滤波器对角频率为信号的阻尼作用,是滤波器中表示能量衰耗的一项指标,它是与传递函数的极点实部大小相关的一项系数。它可由传递函数的分母多项式系数求得: (1.4)式中,表示传递函数的分母多项式系数。的倒数Q=1/称为品质因数,是评价带通与带阻滤波器频率选择特性的一个重要指标,Q为: (1.5)式中的为带通或带阻滤波器的3dB带宽,为中心频率,在很多情况下中心频率与固有频率y相等。 d灵敏度4 滤波电路由许多元件构成,每个元件参数值的变化都会影响滤波器的性能。滤波器某一性能指标对某一元件参数变化的灵敏度记作,定义为:= 灵敏度是滤波电路设计中的一个重要参数,可以用来分析元件实际值偏离设计值时,电路实际性能与设计性能的偏差程度;也可以用来估计在使用过程中元件参数值变化时,电路性能变化情况。该灵敏度与测量仪器或电路系统灵敏度概念不同,该灵敏度越小,标志着电路容错能力越强,稳定性也越高。1.3 IIR滤波器的研究意义研究IIR滤波器,其意义非常重大,也很必要。最近十几年以来,在世界通信领域,数字信号处理的技术发展特别快,是在经济领域内掀起了一股通信热潮。各个国家都在打信息战,比较典型的一个列子就是美国和日本大力发展的通信技术,逐渐向任何人任何地点都可以相互通信,这都依赖于信号处理技术,而滤波器是作为信息处理的一个重要的指标,尤其有很重大的意义。滤波器的应用技术几乎遍布全球。它们应用于传真、调制解调器、蜂窝电话,声音、语言处理,语音识别等领域;应用于网络和互联网、无线通信、机顶盒、视频和影像产品等领域;应用于雷达声纳、地震勘测等领域;应用于工业制造、电力系统、自动化等领域。1.4 课题研究方法本课题主要内容是在研究分析IIR滤波器的原理的基础上,详细介绍IIR滤波器的MATLAB软件仿真,然后用GUI设计一个用户界面。这样一个IIR滤波器就得到了从软件得到了实现。首先要明确IIR滤波器的基本原理,IIR滤波器在本质上无限冲击响应,必须要用逼近的方法来实现。然后详细掌握MTLAB和GUI设计思路,根据各个函数的功能,编写相应的源程序,实现IIR滤波器过程仿真。研究的重点和难点都集中于源程序。1.5 论文结构及主要工作第一章 对IIR滤波器进行了简单的介绍,讨论了研究的背景、国内外研究情况,并概要的说明了IIR滤波器的意义和课题研究方法;第二章对IIR滤波器的原理以及简单介绍MATLAB的发展,并对其在应用方面的应用做了具体的表述;第三章主要对IIR滤波器系统的概述,包括MATLAB设计和GUI界面设计,第四章主要是该系统的运行结果与分析。第五章对本论文进行了总结和对IIR滤波器的展望。本文的主要工作为:通过对IIR滤波器的仿真软件的以及人机交互界面的设计,学会设计和实现IIR滤波器。第2 章 IIR滤波器设计相关工具和技术2.1系统仿真软件(MATLAB)MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和simulink两大部分。使用 MATLAB,可以使用传统的编程语言(如 C、C+ 等)更快地解决技术计算问题。其应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。9MATLAB是一个高级的矩阵/阵列语言,MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。它由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。MATLAB不仅具有强大的科学计算机数据处理能力,还具备了出色的图形处理功能。MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的GUI工具进行界面设计的详细步骤。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。52.2 MATLAB的GUI工具GUI设计面板是GUI设计工具应用的平台,面板上部提供了菜单和常用工具按钮,左边提供了多种GUI控件,如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。进行 GUI设计时,首先单击面板左边所需的控件,然后在右边的图形界面编辑区中再次单击某一恰当位置,这时将在该位置上为图形界面添加相应的控件。一个图形界面的完成,除了设计其外观外,还有相当的一部分是通过属性的设置来完成的.因此从几个属性来认识GUI:控件的FontName属性:用来设置控件对象显示内容的字体名称。控件的FontSize属性:用来设置控件对象显示内容的字体字号。控件的Enable属性:用来设置控件对象的活动状态。控件的String属性:它是对控件对象所显示内容的设置。内容是一字符串,对不同的控件其ing的值会有所不同。对按钮、编辑框等可直接设置string值。控件的Tag属性:它是对控件对象属性内容的一种标记设置,类似于一个标识符。如“确定”命按钮对应的“tag”标记为“pushbutton2”;“滤波器类型选择”下拉菜单对应的“tag”是“popupmenul”4。MATLAB中的属性控制非常多,要设置哪些对象的属性,哪些可以不设置,都需针对具体问题具体分析解决。接下来再通过控件布置编辑器来设置控件的对齐方式及间距等,以完善界面功能。按要设计好的R数字滤波器主面板见图1,共包括4个区域:图形区:用于显示各模块的仿真曲线;参数设置区:由4个静态文本框(text)和4个编辑框(edit)以及类型选择按纽组成,实时的进行系统参数的设定和butterworth模拟滤波器原型的选定;对象模型区:由下拉菜单选定数字滤波器类型,当用户的输人参数发生变化时,可通过单击响应的“确定”按钮,实现设计结果的实时刷新与显示;数据显示区:对应于图形显示结果,实时显示滤波器阶次和分子分母多项式系数。2.3 GUI界面设计的总结2.3.1.使用GUIDE帮助创建GUI 图2.1 创建GUI在Command 里面输入 GUIDE 或者从菜单里面,或者从快捷按钮均可进入 GUIDE新建并且保存后,会生成相应的fig文件和m文件,在Layout编辑视图,11可以使用如下工具:Layout Editor:布局编辑器;Alignment Tool:对齐工具;Property Inspector:对象属性观察器;Object Browser:对象浏览器;Menu Editor:菜单编辑器。2.3.2 使用控件新建一个布局(窗口),可以在新窗口中添加如下控件:1静态文本(Static Text) 2编辑框(Edit Text)控件3列表框(Listbox)控件 4滚动条(Slider)控件5按钮(Push Button)控件 6开关按钮(Toggle Button)控件7单选按钮(Radio Button)控件 8按钮组(Button Group)控件9检查框(Check Box)控件 10列表框(Listbox)控件11弹出式菜单(Popup Menu)控件 12坐标轴(Axes)控件13面板(Panel)控件3你可以使用属性编辑器来设置属性,如图图2.2属性设置图2.3.3写回调函数 CallBack 每个控件都有几种回调函数,右键选中的控件一般会有如下图菜单2.3.3,然后就可以跳转到相应的 Editor中编辑代码,GUIDE会自动生成相应的函数体、函数名、名称一般是控件Tag+ Call类型名参数有三个 ( hObject, eventdata, handles),其中 hObject 为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄CreateFcn 是在控件对象创建的时候发生(一般为初始化样式,颜色,初始值等)DeleteFcn 实在空间对象被清除的时候发生ButtonDownFcn和KeyPressFcn分别为鼠标点击和按键事件Callback,CallBack为一般回调函数,因不同的控件而已异。例如按钮被按下时发生,下拉框改变值时发生,sliderbar 拖动时发生等等。完成控件的布局,即完成了整个图形界面的结构设计,MATLAB把图形界面保存于 *.fig 中,并自动生成 *.m文件。用于保存程序代码。现在所要做的工作就是在 M文件框架下定义某些特殊要求的状态并补充完整回调函数(Callback)使单击控件时激活回调程序完成一定的功能。图2.3 回调函数callback菜单2.3.4句柄图形之间的层次关系可以创建图形句柄的常见函数:1figure函数:创建一个新的图形对象。2newplot函数:做好开始画新图形对象的准备。3axes函数:创建坐标轴图形对象。4line函数:画线。5patch函数:填充多边形。6surface函数:绘制三维曲面。7image函数:显示图片对象。8uicontrol函数:生成用户控制图形对象。 9uimenu函数:生成图形窗口的菜单中层次菜单与下一级子菜单。第3章 IIR滤波器的设计过程IIR数字滤波器的设计方法有两类,一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,再用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要计算机作辅助工具。随着MATLAB软件尤其是MATLAB的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。IIR数字滤波器的设计实际上是求解滤波器系统函数H(z)的分子分母多项式系数 bz和az,它是数学上的一种逼近问题。即在规定意义上去逼近系统的特性,如果在S平面上去逼近,就得到模拟滤波 器;如果在 z平面逼近 ,就得到数字滤波器。R数字滤波器设计的步骤如下:(1)将给定的数字滤波器的性能指标进行转换,转换后的频率指标作为模拟滤波器原型设计指标;(2)估计模拟滤波器的最小阶次和边界频率;(3)设计 butterworth模拟低通滤波器原型;(4)由模拟原型经频率变换得到实际的模拟(低通、高通、带通、带阻)滤波器;(5)将模拟滤波器转换为 IIR数字滤波器,可利用脉冲响应不变法 或双线性变换法。对设计的各个步骤,MATLAB提供了相应的工具箱函数,使 IIR数字滤波器的设计变得非常简单。本章先下面将从两个例子分别介绍IIR滤波器的设计方法。然后用MATLAB设计一个巴特沃斯IIR低通滤波器,最后用GUI设计一个界面。3.1 两种常用的设计IIR低通滤波器方法数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,滤波器的功能实现实际上是通过大量的加法运算和乘法运算完成的。常用的两种方法是脉冲响应不变法和双线性变换法。3.1.1脉冲响应不变法 举例说明此方法:要设计一个数字滤波器去仿真一个模拟滤波器有脉冲响应不变法和双线性变换法。其设计过程都是由给定的模拟滤波器的系统函数Ha(s)去变换出相应的数字滤波器的系统函数H(z)。脉冲响应不变法的设计过程如下: 已知一模拟滤波器系统函数: (3.1) 为方便求出其时域单位脉冲响应,将上式化为部分分式之和的形式: (3.2) 由拉氏反变换得模拟滤波器在时域的单位脉冲响应: (3.3)由时域的数字仿真的条件(即脉冲响应不变准则)可得相应的数字滤波器的脉冲响应: (3.4)5. 再对两边进行Z变换,即可得到数字滤波器的系统函数: (3.5)用脉冲响应不变法来设计数字滤波器,只需将给出的模拟滤波器的系统函数Ha(s)化为部分分式之和的形式,找出极点pi和系数Ai ,带入数字滤波器传函当中即可。由 (3.6)得到: (3.7)3.1.2 双线性变换法 双线性变换法的设计过程如下:由积分器构成的模拟滤波器的系统函数形式; (3.8) 2. 由传递函数得信流图3.1:图3.1信流图满足指标要求的低通IIR数字滤波器的幅度特性,如果与 Butterworth模拟原形低通滤波器相比较可知,采用脉冲响应不变法转换成的数字滤波器的幅度特性与原形低通滤波器幅度特性有差别,且频率愈高差别愈大,这是由于频率混叠现象起的。而采用双线性变换法设计的 IIR数字滤波器由于该转换法的频率压缩作用,使处的幅度降为零,而且曲线的形状偏离原低通滤波器幅度特性曲线的形状较大,这是因为该转换法的非线性造成的。这充分显示了两种设计方法的特点,形象直观。3.2 利用MATLAB设计巴特沃斯IIR低通滤波器实例:设计一个butterworth低通(或高通等)R数字滤波器,通带边沿频率为100 Hz,阻带边沿频率为300 Hz,通带波纹为1 dB,阻带衰减大于15 dB,采样频率为1000 Hz,拟设计一款滤波器:(1)能在 GUI上提供方便的边沿频率给定途径; (2)当选择“butterworth”滤波器时,能在图轴上画出设计的模拟原型滤波器的频率响应曲线以及它在 S平面的零极点分布,从而判断系统的稳定性; (3)在下拉菜单里选择滤波器类型时,能根据类型 自动出现相应滤波器的截止频率或带阻滤波器阻带上下起始频率 Wsl、Ws2的数值输入框(而在初始运行 GUI时,对应的静态文本框和编辑输入框都是不可见的); (4)输入数值后,按“确定”按钮时能出现相应的数字滤波器幅频响应曲线; (5)同时在整个图形界面的下边能显示滤波器阶数N,原型滤波器的分子分母多项式系数 b,a及设计的数字滤波器的分子分母多项式系数bz,az。9实现程序如下: clear;close all; fp=40;fs=150;Fs=1000;Rp=3;Rs=60;T=1/Fs; W1p=2*tan(2*pi*fp*T/2)/pi; W1s=2*tan(2*pi*fs*T/2)/pi; %求归一化频率 N,Wn=buttord(W1p,W1s,Rp,Rs);%确定最小阶数和频率参数 z,p,k=buttap(N);%设定模拟低通原型的零极点增益参数 bp,ap=zp2tf(z,p,k);%将零极点增益转换成分子分母参数 bp,ap=butter(N,1,'s');%直接获取归一化低通原型 bs,as=lp2lp(bp,ap,Wn*pi*Fs);%将低通原型转换为模拟低通 bz,az=bilinear(bs,as,Fs); sys=tf(bz,az,T);%给出传输函数 H,W=freqz(bz,az,512,Fs); plot(W,20*log10(abs(H); figure(2) n=0:100; % s=sin(2*pi*500*T)+sin(2*pi*7000*T); %含不同频率余弦信号 % subplot(2,1,1);plot(T,s) %混频信号波形 s=sin(2*pi*500*n*T)+sin(2*pi*7000*n*T); %含不同频率余弦信号 subplot(2,1,1);plot(n*T,s) %混频信号波形 % subplot(2,1,1);plot(n*T,y) %通过数字滤波器滤波后输出信号波形 title('输入信号') xlabel('t'); ylabel('s'); s1=fft(s,100); mag1=abs(s1); f1=(0:length(s1)-1)'*fs/length(s1); subplot(2,1,2);plot(f1,mag1) %混频信号频谱波形 title('输入信号频谱') xlabel('w'); ylabel('db'); axis(0,0.8,0,40); figure(3) y=filter(bz,az,s); %数字滤波函数输出 subplot(2,1,1);plot(T,y) %通过数字滤波器滤波后输出信号波形 title('输出信号') xlabel('t'); ylabel('s'); y1=fft(y,100); mag2=abs(y1); f2=(0:length(y1)-1)'*fs/length(y1); subplot(2,1,2);plot(f2,mag2) %输出信号频谱波形 title('输出信号频谱') xlabel('w'); ylabel('db'); axis(0,0.8,0,40);3.3 用GUI设计用户界面 MATLAB提供了编写图形用户界面的功能。所谓图形用户界面。简称为GUI(Graphics User Interface)。是由各种图形对象,如图形窗口菜单按钮、文本框等构建的用户界面,是人机交流信息的平台和工具。本文就如何利用该软件实现对IIR数字滤波器的设计加以论述。9本次任务涉及到两个最主要的回调 函数编写,即命令按钮和下拉菜单。GUI设计时默认的“butterworth”命令按钮对应的“tag”是 “pushbuttonl”,“确定”命令按钮对应的“tag”是“pushbutton2”;“滤波器类型选择”下拉菜单对应的“tag”是“popupmenul”。按设计思路要求当输人数字滤波器性能指标并按下“butterworth”命令按钮时,开始在 GUI上画模拟原型滤波器的频率响应以及它在 S平面的零极点分布,同时显示滤波器阶数、原型滤波器的分子分母多项式系数b,a;9选择“滤波器类型选择”并按下“确定”按钮时应画出相应的数字滤波器幅频响应曲线及设计的数字滤波器的分子分母多项式系数bz,az。程序如下:function varargout = untitled1(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled1_OpeningFcn, . 'gui_OutputFcn', untitled1_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction untitled1_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;function varargout = untitled1_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction edit3_Callback(hObject, eventdata, handles)functio