iir滤波器论文
、第 I 页
基于MATLAB的IIR的滤波器的设计
摘 要
随着信息化的推进,数字信号处理的地位和作用变得越来越重要。因为信息化的基础是数字化,而数字化的核心技术就是数字信号处理。而数字滤波器在需要进行数字信号处理的许多系统中起着重要作用。实际上,语音处理设备、图像处理设备和数字通信系统等各种系统中都使用数字滤波器。
在进行DSP系统设计时,往往先采用MATLAB等对算法进行仿真,确定最佳算法和参数。利用MATLAB的信号处理工具箱可以直接设计数字滤波器,也可以建立模拟原型,离散化设计数字滤波器。
本文在深刻理解数字滤波器的基础上,充分利用MATLAB强大的信号处理功能,对IIR数字滤波器进行设计。在IIR数字滤波器设计过程中,本文介绍了IIR数字滤波器的特点、结构、设计原理以及在MATLAB中的实现。
关键词:IIR数字滤波器,数字信号处理(DSP),MATLAB
IIII
、第 II 页
Design Of IIR Digital Filter Based On MATLAB
Yan Chengzhi
Tutor : Yang Yongshuang
Author:
Abstract
Along with the information advancement, the digital signal processing status and the function changes more and more importantly. Because the information foundation is the digitization, but the digitized core technology is the digital signal processing. In fact, the pronunciation handling equipment, the picture handling equipment and the digital communication system and so on in each kind of system all uses the digital filter.
When we design DSP system,usually used for such MATLAB simulation algorithm , so that best algorithms and parameters can be determined.The digital filter can be designed and the analog filter model can be built by signal processing toolbox of MATLAB.This paper introduces design principle of digital filter,procedures and rea1ization with MATLAB.
This article in the profound understanding numeral filter foundation, fully uses the MATLAB formidable signal processing function, carries on the design to the IIR numeral filter. In the IIR numeral filter design process, this article introduced the IIR numeral filter characteristic, the structure, the principle of design as well as in the MATLAB realization.
Keywords : IIR digital filter,Digital signal processing(DSP),MATLAB
IIIIII
、第 III 页
目 录
1 绪论 ................................................................................................................................ 1 1.1 IIR的滤波器设计的问题的提出 ............................................................................. 1 1.2 本论文主要研究内容 .............................................................................................. 2 2 MATLAB语言 ................................................................................................................ 3 2.1 概述 .......................................................................................................................... 3
2.1.1 MATLAB的发展 ............................................................................................ 3 2.1.2 MATLAB系统 ................................................................................................ 4 2.2 MTATLAB 语言 ....................................................................................................... 5
2.2.1 MATLAB 语言介绍 ....................................................................................... 5 2.2.2 MATLAB的主要特点 .................................................................................... 6 2.2.3 MATLAB语言的功能 .................................................................................... 6 2.2.4 MATLAB的界面 ............................................................................................ 6 2.3 MTATLAB的应用 .................................................................................................... 7
2.3.1简单的数学运算 ............................................................................................. 7 2.3.2 MATLAB的工作空间 .................................................................................... 8 2.3.3基本的绘图命令 ............................................................................................. 8 2.3.4程序流程控制 ................................................................................................. 8 3 数字滤波器 .................................................................................................................. 11 3.1 数字滤波器的基本概念 ........................................................................................ 11
3.1.1数字滤波器分类 ........................................................................................... 11 3.1.2数字滤波器技术要求 ................................................................................... 11 3.1.3数字滤波器性能指标 ................................................................................... 12 3.1.2数字滤波器设计方法概述 ........................................................................... 14 3.2 IIR滤波器的基本概念 ........................................................................................... 14
IVIV
、第 IV 页
3.2.1 IIR滤波器特点 .............................................................................................. 14 3.2.2 IIR滤波器结构 .............................................................................................. 14 3.2.3 IIR滤波器原理 .............................................................................................. 17 4 IIR滤波器的MATLAB设计 ...................................................................................... 19 4.1 Matlab实现IIR滤波器的基本方法 ..................................................................... 19 4.1.1模拟原型方法 ................................................................................................ 19 4.1.2直接设计方法 ................................................................................................ 19 4.1.3 通用Butterworth设计方法 .......................................................................... 19 4.1.4 参数建模方法法 ........................................................................................... 19 4.2 Matlab实现IIR滤波器的基本方法示例 ............................................................. 19
4.2.1双线性变换法 ............................................................................................... 19 4.2.2脉冲响应不变法 ........................................................................................... 20 4.2.3直接设计法 ................................................................................................... 21 4.2.4使用MatLab下的Filter Disigned Tool ....................................................... 22 4.3 Matlab实现IIR滤波器的具体示例 ..................................................................... 22 结论 .................................................................................................................................. 26 致谢 .................................................................................................................................. 27 参考文献 .......................................................................................................................... 28
11
、第 1 页
1绪论
1.1 IIR滤波器的设计的问题的提出
随着信息化的推进,数字信号处理的地位和作用变得越来越重要。因为信息化的基础是数字化,而数字化的核心技术就是数字信号处理。半个世纪以来,在如此强有力的需求牵引下,伴随着计算机技术、微电子技术日新月异的突破,数字信号处理的方法和应用越来越广泛和深入,发展十分迅速。―数字信号处理(DSP)‖是研究数字序列信号的表示方法,并对信号进行运算,以提取包含在其中的特殊信息的一门学科。DSP是一门理论和实践密切结合的理论性和工程性都很强的学科,其理论性体现在,它综合应用数学、电路理论、信号与系统等领域的基础理论和方法,发展并形成了自己的理论体系,成为通信、雷达、声纳.、电声、电视、测控、生物医学工程的众多学科和领域的重要理论与技术基础。其工程性体现在,它的应用极为广泛,从科学技术的各个领域到国民经济的各个行业,从国防建设的各种武器到装备到林林总总的消费类电子产品的设计与生产,都是数字信号处理技术的应用领域。
而数字滤波器在需要进行数字信号处理的许多系统中起着重要作用。实际上,语音处理设备、图像处理设备和数字通信系统等各种系统中都使用数字滤波器。
一种强大的科学计算和工程仿真软件MATLAB就产生,它的交互式集成界面能帮助用户快速的完成数据分析,矩阵运算,数字信号处理,建模仿真等。
在国际学术界,MTATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到 MTATLAB 的应用。MTATLA 作为计算工具和科技资源,可以扩大科学研究的范围、提高工程生产的效率、缩短开发周期、加快探索步伐、激发创造活力。
以此为背景,本论文以MTATLAB对IIR的滤波器的设计,通过MATLAB的信号处理工具箱的应用,让我们认识到数字信号处理的重要性。对数字信号处理技术在工程技术领域的认识有进一步的了解。
本文首先介绍了MATLAB的基本内容,从理论上IIR数字滤波器进行深入细致的研究是非常必要的。本文对滤波器设计中的一些重要环节,包括IIR滤波器的原理、设
22
、第 2 页
计步骤等做了详细的阐述。 1.2 本论文主要研究内容
现代社会发展要求通信系统功能越来越强,性能越来越高,构成越来越复杂;另一方面,要求数字信号处理技术研究和产品开发缩短周期,降低成本,提高水平。这样尖锐对立的两个方面的要求,只有通过使用强大的计算机辅助分析设计技术和工具才能实现。IIR数字滤波器在数字信号处理中有举足轻重的地位,可以满足社会发展的要求。
本论文针对IIR滤波器的研究主要做了以下的工作:
(1)介绍了数字滤波器的相关内容,包括数字滤波器分类、技术指标以及设计的一般方法。
(2)对IIR滤波器的主要环节,包括基本结构以及IIR滤波器设计原理、方法和过程进行了详细的阐述。
(3)在理解IIR滤波器理论的基础上,利用MATLAB强大的仿真功能,用四种不同方法对IIR进行设计及分析。
33
、第 3 页
2 MTATLAB语言
2.1概述
2.1.1 MATLAB的发展
MATLAB语言是由美国的Clever Moler博士于1980年开发的设计者的初衷是为解决―线性代数‖课程的矩阵运算问题取名MATLAB即Matrix Laboratory 矩阵实验室的意思。
MathWorks公司于1993年推出了基于Windows平台的MATLAB4.0。4.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:(1)推出了SIMULINK,一个交互式操作的动态系统建模、仿真、分析集成环境。(2)推出了符号计算工具包。一个以Maple为―引擎‖的Symbolic Math Toolbox 1.0。此举结束了ITI际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时一代。(3)构作了Notebook MathWorks公司瞄准应用范围最广的Word,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为令业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。从1997年春的5.0版起,后历经5.1,5.2,5. 3,6.0,6.1到7.0等多个版本的不断改进,MATLAB ―面向对象‖的特点愈加突出,数据类型愈加丰富,操作界ICI愈加友善。2002年初夏所推6 5版的最大特点是:该版本采用了JIT加速器,从而使MATLAB朝运算速度与C程序相比肩的方向前进了一大步。
它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的相结合。
MATLAB是一种直译式的高级语言,比其它程序设计语言容易。 MATLAB语言与其它语言的关系仿佛和C语言与汇编语言的关系一样。
MATLAB已经不仅仅是一个―矩阵实验室‖了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows图形界面设计方法。
MATLAB语言是功能强大的计算机高级语言,它以超群的风格与性能风靡全世界,成功地应用于各工程学科的研究领域[1]。
44
、第 4 页
2.1.2 MATLAB系统
MATLAB系统共由5个主要部分构成: (1)MATLAB语言; (2)MATLAB工作环境; (3)MATLAB数学函数库; (4)MATLAB图形处理系统; (5)MATLAB应用程序接口。 1.MATLAB语言
MATLA9语言是一种面向对象的高级语言.不如前面所述.它以矩阵作为最基本的数据结构。MATLAB语言有自已独特的数据结构、输入输出功能、流程控制语句和函MATLAB在工程计算方面具有其他高级语言无法比拟的优越性,它集计算、数据可视化、程序设计于一体,并能将数学问题和解决方案以用户热悉的数学符号表示出来,因而被称为―科学便笺式‖的科学工程计算语言[2]。
2.MATLAB工作环境
MATLAB工作环境是一个集成化的工作空间,它给用户提供了管理变量和输入输出数据的功能,并提供了用于管理调试M文件的工具。它主要包括以下部分:
(1)命令窗口;
(2)M文件编辑调试器; (3)MATLAB工作空间; (4)在线帮助文档。 3.MATLAB数学函数库
MATLAB数学函数库中包括了大量的数学函数,既有诸如求和、取正弦、指数运算等简单函数,也包含了矩阵转置、傅里叶变换、矩阵分解、求解线性方程组等复杂函数。MATLAB数学函数有两种方式,第一种是比较简单的内部函数,它们直接内置于MAT—LAB的核心中,因此运行的效率很高;第二种是以M文件提供的外部函数,它们极大地扩展了MATLAB的功能,并使MATUB具有了很高的可扩充性,使MATLAB能够应用于越来越多的科学领域[3]。
4.MATLAB图形处理系统
MATLAB具有强大的图形处理功能,用于使科学计算的结果可视化。图形处理系
55
、第 5 页
统的功能主要包括:
(1)二维图形的绘制和处理; (2)三维图形的绘制和处理;
(3)图形用户界面的定制。 5.MATLAB应用程序接口
MATLAB应用程序接口(APl)是一个让MATLAB语言同C、FORTRAN等其它高级语言进行交互的函数库,该函数库的函数通过动态镕接来读写MATLAB文件。MATIA8应用程序接口的主要功能如下:
(1)在MATLAB中输入和输出数据;
(2)从MATLAB中调用C和FORTRAN程序;
(3)在MATLAB和其他应用程序中建立客户机服务器的关系。
MATLAB 数值计算函数库的另一个特点是其内容的基础性和通用性。它正由于这一特点,而适应了诸如自动控制、信号处理、动力工程、电力系统等应用学科的需要,并进而开发出一系列应用工具包。 2.2 MTATLAB 语言 2.2.1 MATLAB 语言介绍
MATLAB语言是由美国的Clever Moler博士于1980年开发的设计者的初衷是为解决―线性代数‖课程的矩阵运算问题取名MATLAB即Matrix Laboratory 矩阵实验室的意思。
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和 FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。
66
、第 6 页
2.2.2 MATLAB的主要特点
语言简洁紧凑,使用方便灵活,库函数极其丰富;运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行;MATLAB的图形功能强大;MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢;功能强大的工具箱是MATLAB的另一特色;源程序的开放性。 2.2.3 MATLAB语言的功能
强大的数值(矩阵)运算功能;广泛的符号运算功能;高级与低级兼备的图形功能(计算结果的可视化功能);可靠的容错功能;应用灵活的兼容与接口功能;信息量丰富的联机检索功能。 2.2.4 MATLAB的界面
如图2.1所示:
图 2.1界面
New 建立新文件 Open M-File 打开M-文件 Open selected 打开选定文件
77
、第 7 页
Save Workspace As 将工作区存为 Run M-File 运行M-文件 Look For Selected 寻找选定文件 Print
打印
Print Setup 打印设置 Exit MATLAB 如图2.2所示:
图 2.2工作界面
退出 MATLAB
工作界面有4个主要的窗口: Command Window 命令窗口 Command History 当前目录窗口 Workspace 工作间管理窗口 Current Directory 当前路径窗口 2.3 MTATLAB的应用 2.3.1简单的数学运算 (1)常用的数学运算符
+,-,*(乘),/(左除),\\(右除),^(幂)在运算式中,MATLAB通常不需要考虑空格,多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉MATLAB
88
、第 8 页
显示结果,而分号则禁止结果显示。
(2) 常用数学函数
abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real,sign,log,log10,conj(共扼复数)等。 2.3.2 MATLAB的工作空间
(1)MATLAB的工作空间包含了一组可以在命令窗口中调整(调用)的参数
who :显示当前工作空间中所有变量的一个简单列表 whos :则列出变量的大小,数据格式等详细信息 clear :清除工作空间中所有的变量 clear :变量名:清除指定的变量 (2)保存和载入workspace
将变量列表variables所列出的变量保存到磁盘文件filename中Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔 未列variables时,表示将当前工作空间中所有变量都保持到磁盘文件中 缺省的磁盘文件扩展名为\" mat\",可以使用\"-\"定义不同的存储格式(ASCII,V4等)。
将以前用save命令保存的变量variables从磁盘文件中调入MATLAB工作空间,用load 命令调入的变量,其名称为用save命令保存时的名称,取值也一样 Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔 未列出variables时,表示将磁盘文件中的所有变量都调入工作空间。 2.3.3基本的绘图命令
plot(x1,y1,option1,x2,y2,option2,…)
x1,y1给出的数据分别为x,y轴坐标值,option1为选项参数,以逐点连折线的方式绘制1个二维图形;同时类似地绘制第二个二维图形,……等。
这是plot命令的完全格式,在实际应用中可以根据需要进行简化如:plot(x,y);plot(x,y,option)选项参数option定义了图形曲线的颜色,线型及标示符号,它由一对单引号括起来 例exp2_3 m exp2_3_ m。 2.3.4程序流程控制
(1)for循环语句
99
、第 9 页
基本格式
for 循环变量=起始值:步长:终止值 循环体 end
(2)while 表达式
while循环语句 基本格式 循环体 end
若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。
While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的 。
(3)if,else,else if语句
if 逻辑表达式 执行语句 end
当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行。 若为假,则跳过结构中的内容,向下执行。
if 逻辑表达式 执行语句1 else 执行语句2 end
if-else的执行方式为:如果逻辑表达式的值为真,则执行语句1,然后跳过语句2,向下执行;如果为假,则执行语句2,然后向下执行。
if逻辑表达式1 执行语句1 else if 逻辑表达式2
1010
、第 10 页
执行语句2 end …
if-else if的执行方式为:如果逻辑表达式1的值为真,则执行语句1;如果为假,则判断逻辑表达式2,如果为真,则执行语句2,否则向下执行。 switch语句
格式:switch 表达式(%可以是标量或字符串) case 值1 语句1 case 值2 语句2… otherwise 语句3 end
1111
、第 11 页
3 数字滤波器
3.1数字滤波器的基本概念 3.1.1 数字滤波器分类
数字滤波器从实现的网络结构或者从单位脉冲响应分类,可以分成无限脉冲响应(IIR)滤波器和有限脉冲响应(FIR)滤波器。它们的系统函数分别为:
H(z)N1n0Mbrzr1akzkk1r0NH(z)h(n)zn数字滤波器从功能上可分类,和模拟滤波器一样,可以分为低通、高通、带通、和带阻滤波器。它们的理想幅度特性如图3.1所示[4]。
低通
2π2πH(ej)2ππ高通0πH(ej)2ππ带通0πH(ej)2π2ππ带阻0πH(ej)2ππ0π2π 图3.1 理想低通、高通、带通、带阻滤波器幅度特性 3.1.2 数字滤波器设计的技术要求
我们通常用的数字滤波器一般属于选频滤波器。假设数字滤波器的传输函数H(ej)用下式表示:
H(ej)H(ej)ej()1212
、第 12 页
图3.2 低通滤波器的技术要求
通带内和阻带内允许的衰减一般用dB数表示,通带内允许的最大衰减用αp表示,阻带内允许的最小衰减用αs表示,αp和αs分别定义为:
p20lgs20lgH(ej0)H(ejp)dBH(ej0)H(ejs)dB如将|H(ej0)|归一化为1,上式则表示成:
p20lgH(ejp)dBs20lgH(ej)dBs当幅度下降到2/2时,c,此时p3dB,称c为3dB通带截止频率。c、p、
s统称为边界频率,它们在滤波器设计中是很重要的[5]。
3.1.3数字滤波器的性能指标
在进行滤波器设计时,需要确定其性能指标。一般滤波器的性能指标是以频率响应的幅度响应特性的允许误差来表征。以低通数字滤波器为例:
1313
、第 13 页
图 3.3 幅度特性
图3.3中给出的是要设计的数字滤波器的幅度特性要求,H(0)归一化为1,1是通带允许的误差,2是阻带允许的误差。fc为通带截止频率,fst为阻带截止频率。
用最大衰减和最小衰减(dB)的形式来表示,则通带允许的最大衰减定义为:
120lgH(ej0)H(ejwc)20lgH(ejwc)20lg(11)
阻带允许的最小衰减定义为:
220lgH(ej0)H(ejwst)20lgH(ejwst)20lg2
例如:若H(ejwc)=0.707,则1=3dB;若H(ejwst)=0.001,2=60dB。
以上给出的是数字域指标,因为IIR数字滤波器是根据指标先设计出模拟滤波器,然后根据s-z的映射关系得到数字滤波器,所以应注意数字和模拟指标的转换。如果模拟频率和数字频率w的关系为Tw,则在模拟滤波器中对应的数值要转换一下[6]。
例如:模拟数字滤波器的指标,Ts104s,H(j)在频带04000上的增益最大衰减为0.086dB,在频带6000上的最小衰减为60dB。
则120lg(11)0.08610.01
220lg26020.001
c=4000π,st=6000π 对应的数字指标为:
1=0.01,wccTs0.4 2=0.001,wststTs0.6
1414
、第 14 页
3.1.4数字滤波器设计方法概述
(1)按照任务的要求,确定滤波器的性能指标。
(2)用一个因果稳定的离散线性时不变系统的系统函数去逼近这一性能要求。系统函数有无限脉冲响应(IIR)系统函数及有限脉冲响应(FIR)系统函数两种。
(3)利用有限精度算法来实现这个系统函数。这里包括运输结构、选择合适的字长以及有效数字的处理方法(舍入、截尾)等。实际的技术实现,包括采用通用计算机软件或专用数字滤波器硬件来实现,或采用专用的或通用的数字信号处理器来实现[7]。 3.2 IIR数字滤波器基本概念 3.2.1 IIR数字滤波器的特点
N系统函数: H(z)Y(z)X(z)kbzkM1akzkk1Mk0N差分方程: y(n)aky(nk)bkx(nk)k1k0(1) 系统的单位抽样相应h(n)无限长
(2) 系统函数H(z)在有限Z平面(0<︱Z︱<∞)上有极点存在 (3) 存在输出到输入的反馈,递归型结构[8]。 3.2.2 IIR数字滤波器的结构 (1)直接型
直接按有理分式的形式画成,分为直接Ⅰ型和直接Ⅱ型。
1515
、第 15 页
(a) 直接Ⅰ型结构 (b) 直接Ⅱ型结构
图3.4 直接型结构图
比较直接Ⅰ型和直接Ⅱ型,可以发现,直接Ⅱ型比直接Ⅰ型节省M个延时单元,比M=N的情况下要省一半。
(2)级联型
将传输函数化为因子乘积的形式
通常称式Hk(z),k=1,…,L为基本的二阶节形式。下图是一个N=6时按式所得到的级联型结构,其中每个基本的二阶节采用直接Ⅱ型构成。
图3.5 N=6时 IIR滤波器的级联型结构
(3)并联型
将传输函数用部分分式将它展开以下的形式
其中N=L+2P。若M<N,Bk0,若M=N,仅有B0存在,在M≤N的情况下,上式可表示为
1616
、第 16 页
其中H1k(z)代表式中的第2个求和项中一阶节,而H2k(z)则代表式中的第3个求和项中二阶节。下图是并联结构的流图形式。
图3.6 IIR滤波器的并联结构 (4)转置型
按照信号流图的转置定理,将以上各种信号流图中所有分支的方向反转,并保持支路的增益不变,并将网络的输入也输出交换位置,可得到相应流图结构的转置型结构[9]。 总之,任意阶的IIR滤波器可通过数学分解,表示为:
其中为如下的二阶形式:
这样就可以将任意阶的IIR滤波器通过若干二阶网络(也称为滤波器的二阶基本节)级联起来构成,其结构如图3.7所示。其中,代表第i级的二阶网络。
图3.7 二阶网络结构图
对于每一个二阶基本节,可以转置直接II型结构加以实现,如图所示:
1717
、第 17 页
图3.8 转置直接II型结构图
采用这种级联结构实现IIR滤波器的优点是每一个基本节只是关系到滤波器的某一对极点和一对零点,调整系数a0i、a1i、a2i,只单独地调整了滤波器第i对零点而不影响其他任何零、极点。同样,调整b1i、b2i系数、也只单独调整了第i对极点。因此,这种结构便于准确地实现滤波器的零、极点,也便于调整滤波器的频率响应性能。这种结构的另一个优点是存储单元需要较少,在硬件实现时,可以用一个二阶节进行时分复用,从而降低对FPGA硬件资源的要求。 3.2.3 IIR滤波器原理
IIR滤波器广泛应用于数字信号处理中。IIR的传输函数如下:
该传输函数既有极点又有零点。输出既依赖于输入又依赖于过去输出。IIR所需计算比FIR少。但是IIR具有稳定性问题。对滤波系数的量化特别敏感。一个N阶IIR滤波器的结构如图3.9所示:
1818
、第 18 页
图3.9 N阶IIR滤波器的一般结构
通常,IIR滤波器是以二阶节级联方式实现。一个双二阶节的IIR滤波器结构如图3.10图3.10 2级双节IIR滤波器的结构
所示:
1919
、第 19 页
4 IIR滤波器的MATLAB设计
4.1 Matlab实现IIR滤波器的基本方法 4.1.1模拟原型方法
描述:采用经典低通滤波器作为连续域上的设计模型,通过频域变换得到IIR数字滤波器,最后还要进行离散化处理[10]。
完整设计函数:besself,butter,cheby1,cheby2,ellip; 滤波器的阶估函数:buttord,cheb1ord,cheb2ord,ellipord; 低通模拟滤波器原型函数:besselap,buttap,cheb2ap,ellipap; 频域变换函数:lp2bp,lp2bs,lp2hp,lp2lp; 其他函数:bilinear,impinvar 4.1.2直接设计方法
描述:直接在离散时域上估计线性的幅度响应 函数:yulewalk
4.1.3通用Butterworth设计方法
描述:使用Butterworth设计低通数字滤波器 函数:maxflat 4.1.4参数建模方法
描述:寻找接近于所需要设计的滤波器的通用模型 时域上的建模函数:lpc,prony,stmcb; 频域上的建模函数:invreqs,invfreqz 4.2 Matlab实现IIR滤波器基本方法示例 4.2.1双线性变换法
低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以
2020
、第 20 页
上参数[11]。 FS=1
%通带、阻带截止频率 Fl=0.2;Fh=0.3; %频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示 ws=(Fh/FS)*2*pi; %临界频率采用角频率表示 OmegaP=2*FS*tan(wp/2); OmegaS=2*FS*tan(ws/2);
[n,Wn]=buttord(OmegaP,OmegaS,1,25,'s'); [b,a]=butter(n,Wn,'s'); %freqs(b,a) %设计模拟的
[bz,az]=bilinear(b,a,FS); %映射为数字的 freqz(bz,az,512,FS,'whole') 运行结果如图4.1:
图4.1运行结果
4.2.2脉冲不响应变法
低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数[12]。
2121
、第 21 页
FS=1
[n,Wn]=buttord(0.2*2*pi,0.3*2*pi,1,25,'s'); %临界频率采用角频率表示 [b,a]=butter(n,Wn,'s');
%freqs(b,a) %设计模拟的 [bz,az]=impinvar(b,a,FS); %映射为数字的 freqz(bz,az,512,FS) 运行结果如图4.2:
图4.2运行结果
4.2.3直接设计法
低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。
% Matlab 使用归一化的频率参数(临界频率除以采样频率的1/2)。
%这样临界频率参数的取值范围在0和1之间,1代表Fs/2(用角频率表示的时候对应π) FS=1
[n,Wn]=buttord(0.2/(FS/2),0.3/( FS /2),1,25); [b,a]=butter(n,Wn); freqz(b,a,512, FS); 运行结果如图4.3所示:
2222
、第 22 页
图4.3运行结果
4.2.4使用MatLab6下的Filter Designed Tool
如图4.4所示:
图4.4运行结果
4.3 Matlab实现IIR滤波器具体举例
下面以实现双线性变换法实现Butterworth低通滤波器、低通变换为带通为例: 实现Butterworth低通滤波器具体编程如下:
2323
、第 23 页
%采样频率10Hz,通带截止频率fp=3Hz,阻带截止频率fs=4Hz %通带衰减小于1dB,阻带衰减大于20dB
%使用双线性变换法由模拟滤波器原型设计数字滤波器 T=0.1; FS=1/T; fp=3;fs=4; wp=fp/FS*2*pi; ws=fs/FS*2*pi; Rp = 1; % 通带衰减 As = 20; % 阻带衰减 % 频率预畸
OmegaP = (2/T)*tan(wp/2); % Prewarp Prototype Passband freq OmegaS = (2/T)*tan(ws/2); % Prewarp Prototype Stopband freq %设计 butterworth 低通滤波器原型
N = ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS))); OmegaC = OmegaP/((10^(Rp/10)-1)^(1/(2*N))); [z,p,k] = buttap(N); %获取零极点参数 p = p*OmegaC; k = k*OmegaC^N; B = real(poly(z)); b0 = k; cs = k*B; ds = real(poly(p)); % 双线性变换 [b,a] = bilinear(cs,ds,FS); % 绘制结果 freqz(b,a,512,FS); 运行结果如图4.5:
2424
、第 24 页
图4.5运行结果
实现低通到带通具体编程如下:
% 采样频率 100Hz,Wpl=20Hz,Wph=30Hz,Wsl=15Hz,Wsh=35Hz, % 频率/采样频率*2*pi
%Wpl=0.4*pi,Wph=0.6*pi,Wsl=0.2*pi,Wsh=0.8*pi, %Rp=1;As=20
T = 1; Fs = 1/T; % Set T=1 %T=2;
Wpl=tan(0.4/2/Fs*pi); Wph=tan(0.6/2/Fs*pi); Wsl=tan(0.3/2/Fs*pi); Wsh=tan(0.7/2/Fs*pi);
Rp = 1; % Passband ripple in dB As = 40; % Stopband attenuation in dB %计算模拟低通原型的参数
OmigaP=Wph-Wpl; %低通滤波器通带截止频率 OmigaS=Wsh-Wsl; %低通滤波器通带截止频率 [N,Wn]=buttord(OmigaP,OmigaS,Rp,As,'s'); [B,A]=butter(N,Wn,'s');
[BT,AT]=lp2bp(B,A,sqrt(Wph*Wpl),Wph-Wpl); [b,a]=bilinear(BT,AT,Fs);
2525
、第 25 页
H=freqz(b,a,200,'whole'); plot(abs(H)); 运行结果如图4.6
图4.6运行结果
2626
、第 26 页
结 论
数字滤波器的应用十分广泛,利用MATLAB语言,很容易地设计出IIR滤波器.IIR滤波器可以用较少的阶数获得很高的选择特性,所用的存储单元少、运算次数少,具有经济、高效的特点.在相位要求不敏感的场合,如语音通信等,适合用IIR滤波器;因为IIR数字滤波器是递归结构,极点必须在Z平面单位圆内才能稳定,这种结构运算中的四舍五入处理有时会引起寄生振荡.除了有限字长效应以外,不同结构引入的误差也有所不同.在实际设计中,要注意实现中的误差问题.另外,IIR滤波器在对相位要求严格线性的场合,需加全通网络进行较正,增加了滤波器的阶数和复杂性.这时可选用FIR滤波器。它具有严格的线性相位。
利用MATLAB的强大运算功能,基于MATLAB信号处理工具箱(Signal Processing Toolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。利用MATLAB设计数字滤波器在电力系统二次信号处理软件和微机保护中,有着广泛的应用前景。
通过本文的研究,使我能够正确的使用Matlab软件,并对进行数字信号处理。对以后信息处理的学习和研究奠定了基础。
2727
、第 27 页
参考文献
[1] 董长虹,余啸海.Matlab信号处理与应用[M].国防工业出版社,2005.23 [2] 韩得竹,王 华.MATLAB电子仿真与应用[M].国防工业出版社,2001.45-46 [3] 邹鲲,袁俊泉,龚享铱.MATLAB6.x信号处理[M].清华大学出版社,2002.123-140 [4] 张立材,吴冬梅.数字信号处理[M].北京邮电大学出版社.2004.170-172 [5] 吴振扬.数字信号处理的原理与实现[M].东南大学出版社,2002.169-170 [6] 丁玉美,高西全.数字信号处理[M].西安电子科技出版社,2005.3-20
[7] 陈怀琛,高西全.MATLAB及在电子信息课程中的应用[M].电子工业出版社,2003. [8] 张圣勤.Matlab 7.0实用教程[M].机械工业出版社,2006.15-30
[9] Abed, K.H.; Venugopal, V.; Nerurkar, S.B.; High speed digital filter design using minimal signed digit representation. SoutheastCon, 2005. Proceedings. IEEE.8-10 April 2005 Page(s):105 – 110.Digital Object Identifier 10.1109/SECON.2005.1423227.
[10] Bougas, P.; Kalivas, P.; Tsirikos, A.; Pekmestzi, K.Z.;Pipelined array-based IIR filter. Circuits and Systems I: Regular Papers, IEEE Transactions on [see also Circuits and Systems I: Fundamental Theory and Applications, IEEE Transactions on]Volume 52, Issue 1, Jan. 2005 Page(s):108 - 118 .Digital Object Identifier 10.1109/TCSI.2004.838542.
[11] 饶志强,叶念渝.Fir和IIR数字滤波器的探讨与实现.计算机与数字工程[J]. 第33 卷(2005) 第7 期.
[12] Jongsun Park; Woopyo Jeong; Hunsoo Choo; Mahmoodi-Meimand, H.; Yongtao Wang; Roy, K.; High performance and low power IIR filter design based on sharing multiplication. Low Power Electronics and Design, 2002. ISLPED '02. Proceedings of the 2002 International Symposium on2002 Page(s):295 – 300.
因篇幅问题不能全部显示,请点此查看更多更全内容