IIR滤波器的设计与实现毕业设计.docx
《IIR滤波器的设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《IIR滤波器的设计与实现毕业设计.docx(52页珍藏版)》请在冰豆网上搜索。
IIR滤波器的设计与实现毕业设计
长 沙 学 院
CHANGSHAUNIVERSITY
毕业设计(论文)资料
设计(论文)题目:
IIR滤波器的设计与实现
系 部:
专业:
学生姓名:
班级:
学号2005043216
指导教师姓名:
职称教授
职称助教
最终评定成绩
第一部分毕业论文
一、毕业论文
第二部分外文资料翻译
一、外文资料原文
二、外文资料翻译
第三部分过程管理资料
一、毕业设计(论文)课题任务书
二、本科毕业设计(论文)开题报告
三、本科毕业设计(论文)中期报告
四、毕业设计(论文)指导教师评阅表
五、毕业设计(论文)评阅教师评阅表
六、毕业设计(论文)答辩评审表
2009届
本科生毕业设计(论文)资料
第一部分毕业论文
(2009届)
本科生毕业论文
IIR滤波器的设计与实现
系 部:
电子与通信工程系
专业:
通信工程
学生姓名:
何双喜
班级:
05通信2
学号2005043216
指导教师姓名:
刘光灿
职称教授
王路露
职称助教
最终评定成绩
2009年6月
长沙学院本科生论文
IIR滤波器的设计与实现
系(部):
电子与通信工程系
专业:
通信工程
学号:
2005043216
学生姓名:
何双喜
指导教师:
刘光灿教授
王路露助教
2009年6月
摘要
IIR数字滤波器是数字滤波器中非常重要的一类滤波器,因其可以较低的阶次获得较高的频率选择特性而得到广泛应用。
本文研究了IIR数字滤波器的常用设计方法,即冲激响应不变法和双线性变换法。
在分析各种IIR实现结构的基础上,从理论分析和仿真情况确定了所要设计的IIR数字滤波器的实现结构以及中间数据精度。
在此基础上,使用MATLAB提供的GUI工具,实现方便用户使用的数字滤波器交互界面的开发。
此设计扩展性好,便于调节滤波器的性能,可以根据不同的要求在MATLAB上加以实现。
关键词:
IIR数字滤波器,MATLAB,GUI
ABSTRACT
IIRdigitalfilterdigitalfilterisveryimportantforaclassoffilters,becauseoftheirlowerordertohigherfrequencyselectivepropertieshavebeenwidelyused.Inthispaper,theIIRdigitalfilterdesigntheoryandmethodsused,thatis,thesameimpulseresponsemethodandbilineartransformationmethod.IntheanalysisofIIRstructure,basedontheoreticalanalysisandsimulationtoestablishthedesignofIIRdigitalfilterstructure,aswellasintermediatedataaccuracy.
Onthisbasis,theuseofGUItoolsprovidedbyMATLABtoachieveuser-friendlyinterfaceofthedigitalfilterdevelopment,user-friendly.Goodscalabilityofthisdesign,easytoadjusttheperformanceoffilterscanbebasedondifferentrequirementstobeintherealizationofMATLAB.
Keywords:
IIRdigitalfilter,MATLAB,GUI
第1章绪论
1.1引言
面对庞杂繁多的原始信号,如何提取所需信号、抑制不需要的信号?
这就需要使用滤波器。
滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。
数字滤波器因其精度高、可靠性好、灵活性大等优点,在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。
传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。
本文介绍了一种利用MATLAB信号处理工具箱(SignalProcessingToolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。
给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的GUI工具进行界面设计的详细步骤。
利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
1.2IIR滤波器简介
首先认识滤波器的原理:
数字滤波器的原理有多种,取平均值是其中的一种。
取平均值就是滤除任何有具有频率的变化分量的信号。
数字滤波器还可根据不同原理编制专门的程序,对采集的信号进行特殊的计算来滤除特定频率的信号。
模拟滤波器的原理[1]主要是利用电容器对高频信号的低阻抗、对低频信号的高阻抗和电感对对低频信号的低阻抗、对高频信号的高阻抗的特性,滤除特定频率的信号。
数字滤波器在各种数字信号处理中发挥着十分重要的作用,数字滤波器设计一直是信号处理领域的重要研究课题。
常用的数字滤波器有FIR滤波器和IIR滤波器,其中IIR数字滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现、较好的选频特性等特点,得到了广泛应用。
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。
所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法[5]。
滤波器是一种特别重要的线性时不变系统。
从广义上讲,任何对某些频率(相对于其他频率来说)进行修正的系统称为滤波器。
严格的讲,滤波器是一个能让某些频率通过而完全拒绝其他频率成分的系统。
数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,滤波器的功能实现实际上是通过大量的加法运算和乘法运算完成的。
下面从几个方面分别介绍IIR滤波器:
1IIR数字滤波器的基本结构:
①.直接型:
按给出的差分方程直接实现。
②.级联型:
将系统函数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.3IIR滤波器的研究意义
研究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环境,以解决这些应用领域内特定类型的问题。
[9]
MATLAB是一个高级的矩阵/阵列语言,MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
它由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
MATLAB不仅具有强大的科学计算机数据处理能力,还具备了出色的图形处理功能。
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
利用MATLAB信号处理工具箱(SignalProcessingToolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。
给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的GUI工具进行界面设计的详细步骤。
利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
[5]
2.2MATLAB的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.3GUI界面设计的总结
2.3.1.使用GUIDE帮助创建GUI
图2.1创建GUI
在Command里面输入GUIDE或者从菜单里面,或者从快捷按钮均可进入GUIDE新建并且保存后,会生成相应的fig文件和m文件,在Layout编辑视图,[11]可以使用如下工具:
LayoutEditor:
布局编辑器;
AlignmentTool:
对齐工具;
PropertyInspector:
对象属性观察器;
ObjectBrowser:
对象浏览器;
MenuEditor:
菜单编辑器。
2.3.2使用控件
新建一个布局(窗口),可以在新窗口中添加如下控件:
1.静态文本(StaticText) 2.编辑框(EditText)控件
3.列表框(Listbox)控件 4.滚动条(Slider)控件
5.按钮(PushButton)控件 6.开关按钮(ToggleButton)控件
7.单选按钮(RadioButton)控件 8.按钮组(ButtonGroup)控件
9.检查框(CheckBox)控件 10.列表框(Listbox)控件
11.弹出式菜单(PopupMenu)控件 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句柄图形之间的层次关系
可以创建图形句柄的常见函数:
1.figure函数:
创建一个新的图形对象。
2.newplot函数:
做好开始画新图形对象的准备。
3.axes函数:
创建坐标轴图形对象。
4.line函数:
画线。
5.patch函数:
填充多边形。
6.surface函数:
绘制三维曲面。
7.image函数:
显示图片对象。
8.uicontrol函数:
生成用户控制图形对象。
9.uimenu函数:
生成图形窗口的菜单中层次菜单与下一级子菜单。
第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)。
脉冲响应不变法的设计过程如下:
1已知一模拟滤波器系统函数:
(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模拟原形低通滤波器相比较可知,采用脉冲响应不变法转换成的数字滤波器的幅度特性与原形低通滤波