基于matlab - 数字滤波器的设计

更新时间:2024-05-26 23:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要:利用MATLAB 设计滤波器,可以按照设计要求非常方便地调整设计参数,极大地减轻了设计的工作量,有利于滤波器设计的最优化。Matlab因其强大的数据处理功能被广泛应用于工程计算,其丰富的工具箱为工程计算提供了便利,利用Matlab信号处理工具箱可以快速有效地设计各种数字滤波器,设计简单方便。本文介绍了在MATLAB R2009a 环境下滤波器设计的方法和步骤。

关键词:滤波器,matlab,fdatool

Abstract:By using MATLAB , we can design filters and modify the filters’parameters conveniently according to our demands. This relieves greatly design work loads and makes for optimization of filter designing. Matlab can be widely used in engineering calculations because of its powerful functions of data processing. Its rich toolbox makes the calculations easy. With Matlab signal processing toolbox, various digital filters can be designed effectively in simple way. This article introduce the methods and processes in the circumstance of MATLAB R2009a.

Keywords:filter,matlab,fdatool

目录

1 引言: ................................................................................................................................. 5 2 滤波器简介 ....................................................................................................................... 6 2.1滤波器的概念 ................................................................................................................. 6 2.2 滤波器的发展过程 ......................................................................................................... 6 2.3 滤波器的原理 ................................................................................................................ 7 2.4滤波器的分类 ................................................................................................................. 8 3 MATLAB简介 ................................................................................................................... 10 3.1 MATLAB的概况 ............................................................................................................ 10 3.2 MATLAB产生的历史背景.............................................................................................. 11 3.3 MATLAB的语言特点 ..................................................................................................... 12

4

3.4 MTALAB的功能 .............................................................................................................. 13 4 方案设计 ......................................................................................................................... 16 4.1巴特沃斯IIR滤波器的设计 .......................................................................................... 16 4.2 契比雪夫I型IIR滤波器的设计 ................................................................................... 16 4.3数字滤波器的设计 ........................................................................................................ 17 4.4数字滤波器simulink仿真及实现 ..................................................... 错误!未定义书签。 结论 .................................................................................................................................... 28 参 考 文 献 ....................................................................................................................... 29 致谢 ....................................................................................................... 错误!未定义书签。 1 引言:

与模拟滤波器相对应,在离散系统中广泛应用数字滤波器。它的作用是利用离散时间系统的特性对输入信号波形或频率进行加工处理。或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。数字滤波器一般可以用两种方法来实现:一种方法是用数字硬件装配成一台专门的设备,这种设备称为数字信号处理机;另一种方法就是直接利用通用计算机,将所需要的运算编成程序让通用计算机来完成,即利用计算机软件来实现。

模拟滤波器在测试系统或专用仪器仪表中是一种常用的变换装置。例如:带通滤波器用作频谱分析仪中的选频装置;低通滤波器用作数字信号分析系统中的抗频混滤波;高通滤波器被用于声发射检测仪中剔除低频干扰噪声;带阻滤波器用作电涡流测振仪中的陷波器,等等。

MATLAB是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory(矩形实验室)的缩写。在MATLAB环境下,用户可以集成地进行程序设计,数值计算,图形绘制,输入输出,文件管理等各项操作。除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。目前,Mathworks公司推出了18种工具箱。用户可以根据自己的工作任务,开发自己的工具箱。

5

2 滤波器简介 2.1滤波器的概念

滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的交流电。您可以通过基本的滤波器积木块----二阶通用滤波器传递函数,推导出最通用的滤波器类型:低通、带通、高通、帯阻和椭圆型滤波器。

传递函数的参数——f0、d、hHP、hBP 和hLP,可用来构造所有类型的滤波器。转降频率f0为s项开始占支配作用时的频率。设计者将低于此值的频率看作是低频,而将高于此值的频率看作是高频,并将在此值附近的频率看作是带内频率。阻尼d用于测量滤波器如何从低频率转变至高频率,它是滤波器趋向振荡的一个指标。实际阻尼值从0至2变化。高通系数hHP是对那些高于转降频率的频率起支配作用的分子的系数。带通系数hBP是对那些在转降频率附近的频率起支配作用的分子的系数。低通系数hLP是对那些低于转降频率的频率起支配作用的分子的系数。设计者只需这5个参数即可定义一个滤波器。 2.2 滤波器的发展过程

凡是有能力进行信号处理的装置都可以称为滤波器。在近代电信装备和各类控制系统中,滤波器应用极为广泛;在所有的电子部件中,使用最多,技术最复杂要算滤波器了。滤波器的优劣直接决定产品的优劣,所以,对滤波器的研究和生产历来为各国所重视。

1917年美国和德国科学家分别发明了LC滤波器,次年导致了美国第一个多路复用系统的出现。50年代无源滤波器日趋成熟。自60年代起由于计算机技术、集成工艺和材料工业的发展,滤波器发展上了一个新台阶,并且朝着低功耗、高精度、小体积、多功能、稳定可靠和价廉方向努力,其中小体积、多功能、高精度、稳定可靠成为70年代以后的主攻方向,导致RC有源滤波器 、数字滤波器、开关电容滤波器和电荷转移器等各种滤波器的飞速发展。到70年代后期,上述几种滤波器的单片集成被研制出来并得到应用。80年代致力于各类新型滤波器性能提高的研究并逐渐扩大应用范围。90年代至今在主要致力于把各类滤波器应用于各类产品的开发和研制。当然,对滤波器本身的研究仍在不断进行。

我国广泛使用滤波器是50年代后的事,当时主要用于话路滤波和报路滤波。经过半个世纪的发展,我国滤波器在研制、生产应用等方面已有一定进步,但由于缺少专门研制机构,集成工艺和材料工业跟不上来,使许多新型滤波器的研制应用与国际水平有一段距离。

6

2.3 滤波器的原理

凡是可以使信号中特定的频率成分通过,而极大地衰减或抑制其他频率成分的装置或系统都称之为滤波器,相当于频率“筛子”。 滤波器的功能就是允许某一部分频率的信号顺利的通过,而另外一部分频率的信号则受到较大的抑制,它实质上是一个选频电路。

滤波器中,把信号能够通过的频率范围,称为通频带或通带;反之,信号受到很大衰减或完全被抑制的频率范围称为阻带;通带和阻带之间的分界频率称为截止频率;理想滤波器在通带内的电压增益为常数,在阻带内的电压增益为零;实际滤波器的通带和阻带之间存在一定频率范围的过渡带。 理想滤波器与实际滤波器:

a.理想滤波器的频率特性

理想滤波器:使通带内信号的幅值和相位都不失真,阻喧内的频率成分都衰减为零的滤波器,其通带和阻带之间有明显的分界线。 如理想低通滤波器的频率响应函数为

H(jw)?A0l?jw?t(W?WC) 或 H(jw)?0(W?)CW

理想滤波器实际上并不存在。 b.实际滤波器

实际滤波器的特性需要以下参数描述:

1)恒部平均值A0:描述通带内的幅频特性;波纹幅度:d。

2)上、下截止频率:以幅频特性值为A0/2时的相应频率值WC1,WC2作为带通滤波器的上、下截止频率。带宽B?WC2?WC1。 因为 20lgA02??3dB 所以 B?WC2?WC1也称“-3dB”带宽 A03)选择性:实际滤波器过渡带幅频曲线的倾斜程度表达了滤波器对通带外频率成分的衰减能力,用信频程选择性和滤波器因素描述。

信频程选择性:与上、下截止频率处相比,频率变化一倍频程时幅频特性的衰减量,即倍频程选择性:=20lg?A(2WC2)A(WC2)? 或 =20lg?A(2WC1)A(WC1)?信频程选择性总是小于等于零,显然,计算信量的衰减量越大,选择性越好。

滤波器因素:-60dB处的带宽与-3dB处的带宽之比值,即越小,选择性越好.分辨力:即分离信号中相邻频率成分的能力,用品质因素Q描述。

7

WC1?WC2 Q?W0?B?3dBWC2?WC1Q越大,分辨率越高。

c.实际带通滤波器的形式

1)恒定带宽带通滤波器:B=常量,与中心频率f0无关。

2)恒定百分比带通滤波器:在高频区恒定百分比带通滤波器的分辨率比恒定带宽带通滤波器差。 2.4滤波器的分类

从大的方面分,滤波器分为模拟滤波器和数字滤波器。模拟滤波器有电阻,电容,电感,及由原器件构成;实际中数字滤波器应用的比较广泛。从实现方法上分,数字滤波器分为IIR和FIR,即无限冲激响应滤波器和有限冲激响应滤波器;其中IIR网络中有反馈回路,FIR网络中没有反馈回路。

从小的方面分:

a.按所处理的信号分为模拟滤波器和数字滤波器两种。

b.按所通过信号的频段分为低通、高通、带通和带阻滤波器四种。

低通滤波器:它允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。 高通滤波器:它允许信号中的高频分量通过,抑制低频或直流分量。

带通滤波器:它允许一定频段的信号通过,抑制低于或高于该频段的信号、干扰和噪声。

带阻滤波器:它抑制一定频段内的信号,允许该频段以外的信号通过。 c.按所采用的元器件分为无源和有源滤波器两种:

无源滤波器: 仅由无源元件(R、L 和C)组成的滤波器,它是利用电容和电感元件的电抗随频率的变化而变化的原理构成的。这类滤波器的优点是:电路比较简单,不需要直流电源供电,可靠性高;缺点是:通带内的信号有能量损耗,负载效应比较明显,使用电感元件时容易引起电磁感应,当电感L较大时滤波器的体积和重量都比较大,在低频域不适用。

8

有源滤波器:由无源元件(一般用R和C)和有源器件(如集成运算放大器)组成。这类滤波器的优点是:通带内的信号不仅没有能量损耗,而且还可以放大,负载效应不明显,多级相联时相互影响很小,利用级联的简单方法很容易构成高阶滤波器,并且滤波器的体积小、重量轻、不需要磁屏蔽(由于不使用电感元件);缺点是:通带范围受有源器件(如集成运算放大器)的带宽限制,需要直流电源供电,可靠性不如无源滤波器高,在高压、高频、大功率的场合不适用。

滤波器种类繁多,下面着重介绍近年来发展很快的几种滤波器。 a.有源滤波器

有源滤波器由下列一些有源元件组成:运算放大器、负电阻、负电容、负电感、频率变阻器(FDNR)、广义阻抗变换器(GIC)、负阻抗变换器(NIC)、正阻抗变换器(PIC)、负阻抗倒置器(NII)、正阻抗倒置器(PII)、四种受控源,另外,还有病态元件极子和零子。

b.开关电容滤波器(SCF)

SCF具有下列一些优点:可以大规模集成;精度高;功能多,几乎所有电子部件和功能均可以由SC技术来实现;比数字滤波器简单,因为不需要A/D,D/A转换;功能小,可以做到。

SCF的应用情况:以声频范围应用为主体,工作频率在100KHz之内;在信号处理方面的应用有:程控SCF、模拟信号处理、振动分析、自适应性滤波器、音乐综合、共振谱、语言综合器、音调选择、语声编码、声频分析、均衡器、解调器、锁相电路、离散傅氏变换??。总之,SCF在仪表测量、医疗仪器、数据或信息处理等许多领域都有广泛的应用前景。

c.几种新型数字滤波器(DF) 1)自适应DF

自适应DF具有很强的自学习、自跟踪功能。它在雷达和声纳的波束形成、缓变噪声干扰的抑制、噪声信号的处理、通信信道的自适应均衡、远距离电话的回声抵消等领域获得了广泛的应用,促进了现代控制理论的发展。

自适应DF有如下一些简单算法:W-LMS算法;M-LMS算法;TDO算法;差值LMS算法和C-LMS算法。

2)复数DF

在输入信号为窄带信号处理系统中,常采用复数DF技术。为了降低采样率而保存信号所包含的全部信息,可利用正交双路检波法,取出窄带信号的复包络,然后通过A/D变

9

换,将复包络转化为复数序列进行处理,这个信号处理系统即为复数DF。它具有许多功能。MTI雷达中抑制具有卜勒频移的杂波干扰;数字通信网与模拟通信网之间多路TDM/FDM信号变换复接等等。

3)多维DF

在图象处理、地震、石油勘探的数据处理中都用到多维DF(常用是二维DF),多维DF的设计,往往将一维DF优化设计直接推广到多维DF中去。对于模糊和随机噪声干扰的二维图象的处理,多维DF也能发挥很好的作用。

d.其它新型滤波器

1)电控编程CCD横向滤波器(FPCCDTF)

电荷耦合器(CCD)固定加权的横向滤波器(TF)在信号处理中,其性能和造价均可与数字滤波器和各种信号处理部件媲美。这种滤波器主要用于自适应滤波;P-N序列和Chirp波形的匹配滤波;通用化的频域滤波器以及作相关、褶积运算;语音信号和相位均衡;相阵系统的波束合成和电视信号的重影消除等。

2)晶体滤波器

它是适应单边带技术而发展起来的。在70年代,集成晶体滤波器的产生,使它发展产生一个飞跃,近十年来,对晶体滤波器致力于下面一些研究:实现最佳设计,除具有优良的选择外,还具有良好的时域响应;寻求新型材料;扩展工作频率;改造工艺,使其向集成化发展。它广泛应用于多路复用系统中作为载波滤波器,在收发信中、单边带通信机中作为选频滤波器,在频谱分析仪和声纳装置中作为中频滤波器。

3)声表面波滤波器

它是理想的超高频器件。它的幅频特性和相位特性可以分别控制,以达到要求,体积小,长时间稳定性好和工艺简单。通常应用于:电视广播发射机中作为残留边带滤波器;彩色电视接收机中调谐系统的表面梳形滤波器,此外,在国防卫星通信系统中已广泛采用。声表面波滤波器是电子学和声学相结合的产物,而且可以集成。所以,它在所有无源滤波器中最有发展前途。 3 MATLAB简介 3.1 MATLAB的概况

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

10

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.

MATLAB拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.

开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.

3.2 MATLAB产生的历史背景

在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.

到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序. Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.

1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师JohnLittle.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和CleveMoler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.

1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发.

在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件, Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了

11

其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.

在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。

时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。 3.3 MATLAB的语言特点

一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点:

a.语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。

b.运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。

c.MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

12

d.程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。

e.程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

f. MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。

g.MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

h.功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。

j.源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。 3.4 MTALAB的功能

MATLAB包含的内容非常丰富,功能强大,可以概括为以下几个方面:

a.可以在多种操作系统下运行,如DOS、Windows 95/98/2000/2000/NT、Compaq Alpha、LinuxSun Solaris等。

b.有超过500种的数学、统计、科学及工程方面的函数,使用简单快捷,并且有很强的用户自定义函数的能力。

c. 有强大的图形绘制和可视化功能,可以进行视觉数据处理和分析,进行图形、图像的显示及编辑,能够绘制二维、三维图形,使用户可以制作高质量的图形,从而写出图文并茂的文章。

d. 有和用其他高级语言(如C,C++,FORTRAN,JAVA)编写的外部程序相接口的能力,也可把MATLAB程序转换成上述高级语言的子程序。

e. 有从外部文件及外部硬件设备读入数据的能力。

13

f .有丰富的网络资源,从相关的Web网站可以直接获得全套的MATLAB联机帮助文件和说明书的电子文档,还可以获得各类技术支持与帮助。

g. 有丰富的工具箱〔toolbox〕。各个领域的专家学者将众多学科领域中常用的算法编写为一个个子程序,即m文件,这些m文件包含在一个个工具箱中。其工具箱可以分为两大类,即功能性工具箱和科学性工具箱。功能性工具箱主要用来扩充MATLAB的符号计算、图形可视化、建模仿真、文字处理等功能以及与硬件实时交互的功能。学科性工具箱是按学科领域来分类的,如信号处理、控制、通信、神经网络图像处理、系统辨识、鲁棒控制、模糊逻辑、小波等工具箱。

MATLAB中的信号处理工具箱内容丰富,使用简便。在数字信号处理中常用的算法,如FFT,卷积,相关,滤波器设计,参数模型等,几乎都只用一条语句即可调用。数字信号处理常用的函数有波形的产生、滤波器的分析和设计、傅里叶变换、Z变换等,如:

波形产生:

sawtooth(锯齿波或三角波) Diric(Dirichlet或周期sinc函数) rand(白噪声信号波形) square(方波) sinc(sinc或 函数) chirp(chirp信号波形)

滤波器的分析: abs(求幅值) angle(求相角) conv(求卷积)

freqz(数字滤波器频率响应) impz(数字滤波器的冲击响应) zplane(数字系统零极点图)

IIR滤波器设计:

butter(巴特沃思数字滤波器) cheby1(切比雪夫I型) cheby2(切比雪夫II型)

14

maxflat(最平滤波器) ellip(椭圆滤波器) yulewalk(递归数字滤波器) bilinear(双线性变换) impinvar(冲激响应不变法)

FIR滤波器设计: triang(三角窗) blackman(布莱克曼窗) boxcar(矩形窗) hamming(海明窗) hanning(汉宁窗) kaiser(凯塞窗) fir1(基于窗函数法) fir2(基于频率抽样法)

firrcos(上升余弦FIR滤波器设计法) intfilt(内插FIR滤波器设计法)

kaiserord(用Kaiser窗设计FIR滤波器的参数估计)

各种变换:

czt(线性调频Z变换) dct(离散余弦变换) fft(一维快速傅里叶变换) fft2(二维快速傅里叶变换) idct(逆离散余弦变换) ifft(一维逆快速傅里叶变换) ifft2(二维逆快速傅里叶变换) hilbert(Hilbert变换)

可以看出MATLAB是一个功能十分强大的系统,是集数值计算、图形管理、程序开发为一体的环境。除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。用户可以根据自己的工作任务,开发自

15

己的工具箱。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。 在设计研究单和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。 4 方案设计

4.1巴特沃斯IIR滤波器的设计

在MATLAB下,设计巴特沃斯IIR滤波器可使用butter函数。

Butter函数可设计低通、高通、带通和带阻的数字和模拟IIR滤波器,其特性为使通带内的幅度响应最大限度地平坦,但同时损失截止频率处的下降斜度。在期望通带平滑的情况下,可使用butter函数。butter函数的用法为:[b,a]=butter(n,Wn,/ftype/)其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。buttord函数的用法为:[n,Wn]= buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。

不同类型(高通、低通、带通和带阻)滤波器对应的Wp和Ws值遵循以下规则: a.高通滤波器:Wp和Ws为一元矢量且Wp>Ws; b.低通滤波器:Wp和Ws为一元矢量且Wp

c.带通滤波器:Wp和Ws为二元矢量且WpWs,如Wp=[0.1,0.8],Ws=[0.2,0.7]。 4.2 契比雪夫I型IIR滤波器的设计

在期望通带下降斜率大的场合,应使用椭圆滤波器或契比雪夫滤波器。在MATLAB下可使用cheby1函数设计出契比雪夫I型IIR滤波器。

cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。cheby1函数的用法为:[b,a]=cheby1(n,Rp,Wn,/ftype/)在使用cheby1函数设计IIR滤波器之前,可使用cheblord函数求出滤波器阶数n和截止频率Wn。cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I型滤波器的最小阶和截止频率Wn。cheblord函数的用法为:[n,Wn]=cheblord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截

16

止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。 4.3数字滤波器的设计

4.3.1 数字滤波器及传统设计方法

数字滤波器(digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。

数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。

IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。

在对滤波器实际设计时,整个过程的运算量是很大的。例如利用窗函数法设计M阶FIR低通滤波器时,首先要根据(1)式计算出理想低通滤波器的单位冲激响应序列后根据(2)式计算出M个滤波器系数

,然

。当滤波器阶数比较高时,计算量比较大,设

计过程中改变参数或滤波器类型时都要重新计算。

(1)

1w2hd(n)???wH(w)ejnwdw

w2(2)h(n)?hd(n)w(n)

设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。

17

FIR数字滤波器的窗函数设计法

设理想带阻滤波器频率响应为

?1?H(ejw)??0?1?0???2?/52?/5???3?/5 (2) 3?/5????利用Kaiser窗函数,设计长度为55的阻带滤波器,使阻带衰减为60dB。参数β可由式(3)确定α

β=0.1102(α-8.7) (3)

其中α=60。 MATLAB程序如下:

n=55-1; w=[0.4,0.6]; beta=0.1102*(60-8.7); kaiw=Kaiser(n+1,beta); b=fir1(n,w,’stop’,kaiw); [h,w]=freqz(b,1,512,2); plot(w,20*log10(abs(h)));grid; xlabel(‘频率(归一化)’); ylabel((‘幅度dB’));

带阻滤波器幅频特性实现如图1所示。

图1带阻滤波器幅频特性

18

4.3.2.1 FDATool界面设计

FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。

FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、 Chebyshev Type II(切比雪夫II型) 法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。

Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1),如果选择Minimum Order则MATLAB根据所选择的滤波器类型自动使用最小阶数。

Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。

Window Specifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。

4.3.2.2 带通滤波器设计实例

19

在小电流接地系统中注入84.6Hz的正弦信号,对其进行跟踪分析,要求设计一带通数字滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。参数要求:98阶FIR数字滤波器,采样频率1000Hz,采用Hamming窗函数设计。

首先在Filter Type中选择Bandpass(带通滤波器);在Design Method选项中选择FIR Window(FIR滤波器窗函数法),接着在Window Specifications选项中选取Hamming;指定Filter Order项中的Specify Order=97;由于采用窗函数法设计,只要给出通带下限截止频率Fc1和通带上限截止频率Fc2,选取Fc1=80Hz,Fc2=100Hz。设置完以后点击Design Filter即可得到所设计的FIR滤波器。通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。设计完成后将结果保存为图4-1 1.fda文件。

图4-1 1.fda文件

20

在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。其它类型的FIR滤波器和IIR滤波器也都可以使用FDATool来设计。

Magnitude Response

中按

(Magnitude Response)。

Phase Response

中按

(Phase Response)。

图4-2滤波器幅频和相频响应(特性区)

21

与其他高级语言的程序设计相比,MA TLAB环境下可以更方便、快捷地设计出具有严格线性相位的FIR 滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便. 还可以进一步进行优化设计,相信随着版本的不断更新,MA TLAB在数字滤波器技术中必将发挥更大的作用.

4.3.2.3 高通滤波器的设计实例

用窗函数设计高通滤波器,性能指标如下:通带截止频率ωs=0.2π,阻带截止频率ωp=0.3π,实际通带波动Rp=0.25dB,最小阻带衰减As=70dB。

分析:凯泽窗能提供74dB的最小阻带衰减,所以选用凯泽窗进行设计,程序主要部分如下: As=70; ωs=0.2*π; ωp=0.3*π

tr_width=ωp-ωs; %计 算过渡带宽 M=ceil((As-7.95)*2*π/(14.36*tr_width)+1)+1; %按凯泽窗计算滤波器长度

disp([’滤波器的长度为’,num2str(M)]); beta=0.1102*(As-8.7); %计算凯泽窗的β值 n=[0:1:M-1];

disp([’线性相位斜率为’,num2str(beta)]); w_kai=(kaiser(M,beta))’; %求凯泽窗函数 ωc=(ωs+ωp)/2;

hd=ideal_lp(π,M)-ideal_lp(ωc,M); %求理想脉冲响应 h=hd.*w_kai; %设计的脉冲响应为理想脉冲响应与窗函数乘积 [db,mag,pha,grd,ω]=freqz_m(h,[1]); delta_ω=2*π/1000;

Rp=-(min(db(ωp/delta_ω+1:1:501)));

disp([’实际通带波动为’,num2str(Rp)]); %以下为作图程序 As=-round(max(db(1:1:ωs/delta_ω+1))); disp([’最小阻带衰减为’,num2str(As)]); subplot(1,1,1); subplot(2,2,1);

22

stem(n,hd);

title(’理想脉冲响应’); axis([0 M-1 -0.4 0.8]); ylabel(’hd(n)’); subplot(2,2,2); stem(n,w_kai);

title(’凯泽窗’); axis([0 M-1 0 1.1]); ylabel(’wd(n)’); subplot(2,2,3); stem(n,h);

title(’实际脉冲响应’); axis([0 M-1 -0.4 0.8]); xlabel(’n’);ylabel(’h(n)’); subplot(2,2,4); plot(ω/π,db);

title(’幅度响应/dB’); axis([0 1 -100 10]); grid;

xlabel(’以π为单位的频率’); ylabel(’分贝数/dB’);

程序运行结果如图1所示。实际通带波动为0.04369,最小阻带衰减为70,滤波器长度为89,线性相位斜率为6.7553,符合设计要求。

23

图4-3凯泽窗设计的高通滤波器响应曲线

4.3.3 IIR数字滤波器的设计 4.3.3.1 IIR数字滤波器的设计方法

IIR数字滤波器最大的优点是给定一组指标时,他的阶数要比相同组的FIR滤波器的低得多。基于Matlab的IIR滤波器的设计方法主要有完全设计法、模拟原型设计法和直接设计法等。

a. 模拟原型法

采用经典低通滤波器作为连续域上的设计模型,通过频域变换得到IIR数字滤波器,最后还要进行离散化处理。Matlab提供的低通模拟滤波器原型函数包括:besselap,buttap,cheb1lp,cheb2ap,ellipap;频域变换函数包括:lp2bp,lp2bs,lp2hp,lp2lp;离散化处理函数有bilinear和impinvar。

b. 完全设计法

Matlab信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便。

设计Butterworth滤波器用函数butter(),可以设计低通、高通、带通和带阻的数字和模拟滤波器,其特性是通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。

24

设计Chebyshev I型滤波器用函数chebyl()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevI型滤披器,其通带内为等波纹,阻带内为单调。Chebyshev I型滤波器的下降斜度比II型大,但其代价是通带内波纹较大。

设计Chebyshev II型滤波器用函数cheby2()。可以设计低通、高通、带通和带阻的数字和模拟Chebyshev II型滤波器,其通带内为单调,阻带内等波纹。Chebyshev II型滤波器的下降斜度比I型小,但其阻带内波纹较大。

设计椭圆滤波器用函数ellip(),与cheby1,cheby2类似,可以设计低通、高通、带通和带阻的数字和模拟滤波器。与Butterworth和chebyshev滤波器相比,ellip函数可以得到下降斜度更大的滤波器,得到通带和阻带均为等波纹。一般情况下,椭圆滤波器能以最低的阶实现指定的性能指标。

c. 直接设计法

直接设计方法的思想是基于给定的滤波器参数直接在离散域上寻找合适的数字滤波器,他不限于常规的滤波器类型,如低通、高通、带通和带阻等。这种方法甚至可以设计多带的频率响应,Matlab提供yulewalk函数用于辅助设计。

d. 通用Butterworth设计方法

使用这种方法设计的Butterworth数字滤波器可以有不同数目的零点和极点,Matlab提供的maxflat函数实现了这一功能。这个函数与butter函数很相似,但他可以指定两个阶参数,其中归一化和非归一化各一个。如果这两个参数的值相同,那么他与butter函数的结果就是相同的。

e. 参数建模法

寻找接近于所需要设计的滤波器的通用模型,时域上的建模函数为lpc,prony,Stmcb;频域上的建模函数有invfreqs和invfreqz。 典型IIR数字滤波器的设计

双线性变换法

为了克服冲激响应不变法的频率混叠现象,需要使s平面与z平面建立一一对应的单值映射关系,即求出s=f(z),然后将它带入H(s),就可以求得H(z),即

H(z)=H(s)|s=f(z) (1) 为了克服多值映射这一缺点,我们首先把整个s平面压缩变换到某一中介的s1平面的一条横带里,其次再通过上面讨论过的标准变换关系z=es1T将此横带变换到整个z平面上去,这样就使s平面与z平面是一一对应的关系,消除了多值变换性,也就消除了频谱混叠现象。

例如试用双线性变换法设计一个ChebyshevⅡ高通滤波器,使其幅频特性逼近一个具有以下技术指标的模拟ChebyshevⅡ高通滤波器:Ws=2*pi*1kHz,Wp=2*pi*1.4kHz,在Ws

25

处的最小衰减为15dB,在Wp处的最大衰减不超过0.3dB,抽样频率为20kHz。 MATLAB程序为

ws=2*pi*1000; ws1=ws*2*pi; wp=2*pi*1400; wp1=wp*2*pi; rp=0.3; rs=15; fs=20000;

[N,Wn]=cheb2ord(wp1,ws1,rp,rs,’s’); [z,p,k]=cheb2ap(N,rs); [A,B,C,D]=zp2ss(z,p,k);

[At,Bt,Ct,Dt]=lp2hp(A,B,C,D,Wn);

[At1,Bt1,Ct1,Dt1]=bilinear(At,Bt,Ct,Dt,fs); [num,den]=ss2tf(At1,Bt1,Ct1,Dt1); freqz(num,den); [H,W]=freqz(num,den);

plot(W*fs/(2*pi),abs(H));grid; xlabel(‘频率/Hz’); ylabel(‘幅值’);

ChebyshevⅡ高通滤波器的频率响应如图2所示。

图2 ChebyshevⅡ高通滤波器的频率响应

26

可以看到经过离散采样、数字滤波后分离出了83.3hz的频率分量。之所以选取上面的叠加信号

作为原始信号,是由于在实际工作中是要对已经经过差分滤波的信号进一步

一致,可以反映实际的情况。本例设计的滤波器已

做带通滤波,信号的各分量基本同

在实际工作中应用,取得了不错的效果。

27

结论

采用MATLAB设计滤波器,使原来非常繁琐复杂的程序设计变成了简单的函数调用,为滤波器的设和实现开辟了广阔的天地,尤其是Matlab工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。其中的信号处理工具箱、图像处理工具箱、小波工具箱等更是为数字滤波研究的蓬勃发展提供了可能。MATLAB 信号处理工具箱为滤波器设计及分析提供了非常优秀的辅助设计工具, 在设计数字滤波器时, 善于应用MATLAB进行辅助设计, 能够大大提高设计效率。

28

参 考 文 献

[1] 陈德树. 计算机继电保护原理与技术.北京:水利电力出版社,1992. [2] 蒋志凯. 数字滤波与卡尔曼滤波.北京:中国科学技术出版社,1993

[3] 楼顺天、李博菡. 基于MATLAB的系统分析与设计-信号处理.西安:西安电子 [4] 董长虹等. MATLAB信号处理与应用.北京:国防工业出版社,2005

[5] [美] M.H.海因斯 著,张建华等 译.数字信号处理.北京:科学出版社,2002 [6] 张葛祥,李 娜. MATLAB仿真技术与应用.北京:清华大学出版社,20

29

参 考 文 献

[1] 陈德树. 计算机继电保护原理与技术.北京:水利电力出版社,1992. [2] 蒋志凯. 数字滤波与卡尔曼滤波.北京:中国科学技术出版社,1993

[3] 楼顺天、李博菡. 基于MATLAB的系统分析与设计-信号处理.西安:西安电子 [4] 董长虹等. MATLAB信号处理与应用.北京:国防工业出版社,2005

[5] [美] M.H.海因斯 著,张建华等 译.数字信号处理.北京:科学出版社,2002 [6] 张葛祥,李 娜. MATLAB仿真技术与应用.北京:清华大学出版社,20

29

本文来源:https://www.bwwdw.com/article/nfp7.html

Top