基于MATLAB的FIR和IIR数字滤波器的设计与仿真

上传人:无*** 文档编号:41493437 上传时间:2021-11-20 格式:DOC 页数:42 大小:805.07KB
收藏 版权申诉 举报 下载
基于MATLAB的FIR和IIR数字滤波器的设计与仿真_第1页
第1页 / 共42页
基于MATLAB的FIR和IIR数字滤波器的设计与仿真_第2页
第2页 / 共42页
基于MATLAB的FIR和IIR数字滤波器的设计与仿真_第3页
第3页 / 共42页
资源描述:

《基于MATLAB的FIR和IIR数字滤波器的设计与仿真》由会员分享,可在线阅读,更多相关《基于MATLAB的FIR和IIR数字滤波器的设计与仿真(42页珍藏版)》请在装配图网上搜索。

1、安徽工业大学 毕业设计(论文)说明书摘要 信息无处不在,但在步入网络信息时代之后,无论是信息的数量,还是其传递的速度,都在快速地增加。信号是信息传播的载体,但在信号产生、发送以及传播的过程中,都会不可避免地引入一些其他的信号成分。所以,在进行信号处理前,就需要对所接收到的信号进行过滤,以去掉噪声干扰成分,从而得到有效的信号成分。在电子系统中,这个任务通常由滤波器来完成。 本文主要内容是通过MATLAB工具设计两种数字滤波器的基本方法。这两种数字滤波器指无限脉冲响应(IIR, Infinite Impulse Response)滤波器和有限脉冲响应(FIR,Finite Impulse Resp

2、onse)滤波器,输入和输出信号皆为数字信号。以往传统的数字滤波器设计方法步骤繁琐,计算环节繁杂,一旦设计完成,无法便捷修改滤波特性曲线,十分不便,以上缺点极大的限制了数字滤波器的发展与应用。而MATLAB及其附带的工具箱功能十分强大,我们利用该软件设计上述的两种滤波器,可以做到随时把结果曲线与目标滤波特性曲线对比,从而做出改进,节省时间和工作量,优点十分显著。本论文分为三部分:第一部分为绪论,简单介绍数字信号处理中滤波器的作用和前景;第二部分介绍FIR滤波器设计的原理,并且介绍使用MATLAB设计FIR数字滤波器的方法,同时在MATLAB下进行仿真;第三部分介绍IIR滤波器设计的原理,并且介

3、绍使用MATLAB设计IIR数字滤波器的方法,同时在MATLAB下进行仿真。关键词:MATLAB,FIR数字滤波器,IIR数字滤波器,设计,仿真AbstractInformation is everywhere, but after entering the era of network information, regardless of the amount of information, or its transfer speed, are increasing at a high speed. The carrier signal is the dissemination of inf

4、ormation, but in the signal generation, transmission and dissemination process, will inevitably introduce some other signal component. So, in signal processing, we need on the received signal is filtered to remove noise, interference, so as to obtain the signal component effective. In electronic sys

5、tems, this task is usually accomplished by filter.The main content of this paper is the basic method of using MATLAB tools to design two kinds of digital filters. These two kinds of digital filter with infinite impulse response (IIR, Infinite Impulse Response) filter and the finite impulse response

6、(FIR, Finite Impulse Response) filter, the input and output signals are digital signals. The design method of traditional digital filter is complicated, complicated calculation process, once the design is complete, not convenient to modify the filter characteristic curve, very inconvenient, the abov

7、e disadvantages greatly limits the development and application of digital filter. While MATLAB and its toolbox function with very strong, we use the software design of two kinds of filter above, can be done at any time the results curve and target filtering characteristics, so as to make improvement

8、s, save time and effort, notable advantages.This paper is divided into three parts: the first part is the preface, and Prospect of digital signal processing is introduced in the filter function; the second part introduces the principle of FIR filter design, and introduces the method of using MATLAB

9、to design FIR digital filter, and the simulation on the MATLAB; third part introduces the principle of IIR filter design, and introduces the method of using MATLAB IIR digital filter design, and Simulation in MATLAB.Keywords: MATLAB, FIR digital filter, IIR digital filter, design, simulation目录第一章 绪论

10、.1 1.1 研究数字滤波器的意义与背景.1 1.2 数字滤波器的分类.3 1.3 论文工作与编排.4 1.4 本章小结.4第二章 理论依据 2.1 系统设计的理论依据2.1.1 数字滤波器概述2.1.2 FIR和IIR数字滤波器比较 2.2 MATLAB中的滤波器设计工具 2.3 本章小结第三章 基于MATLAB的FIR数字滤波器设计 3.1 MATLAB软件简介3.1.1 MATLAB介绍3.1.2 S-function介绍 3.2 FIR滤波器基础简介3.2.1 FIR滤波器的基本特性3.2.2 主流FIR滤波器的硬件实现方法 3.3 MATLAB滤波器工具设计FIR滤波器实例3.3.1

11、 FIR滤波器的设计3.3.2 FIR滤波器的仿真 3.4 Ti公司基于DSP实现FIR滤波器的程序 3.5 本章小结第四章 基于MATLAB的IIR数字滤波器设计 4.1 IIR滤波器基础简介 4.2 MATLAB滤波器工具设计IIR滤波器实例4.2.1 IIR滤波器的设计4.2.2 IIR滤波器的仿真 4.3 本章小结第五章 总结与展望参考文献致谢第1章 绪 论 在过去的30年间,电子信息技术得到了飞速发展。而且,它正越来越多地影响人们的生活和工作,并逐渐改变着人们的交流方式。这一方面要归功于电子科学技术,特别是微电子技术和计算机技术的蓬勃发展所带来的先进设计方法学及设计流程的高级化,自动

12、化和普及化。另一方面也得益于人们在生活工作过程中不断提出的更高的要求和更新的想法。这些无疑都为现有的电子科学技术提出了更多的挑战,同时也为电子科学技术的发展指明了方向。信息无处不在,但在步入网络信息时代之后,无论是信息的数量,还是其传递的速度,都在快速地增加。信号是信息传播的载体,但在信号产生、发送以及传播的过程中,都会不可避免地引入一些其他的信号成分。所以,在进行信号处理前,就需要对所接收到的信号进行过滤,以去掉噪声干扰成分,从而得到有效的信号成分。在电子系统中,这个任务通常由滤波器来完成。目前,日益巨大的信号量对滤波器信号实时处理性能的要求越来越高,而模拟滤波器己难以满足。因此,对于数字信

13、号处理的研究,特别是对数字滤波技术的研究,是十分有意义的。1.1研究数字滤波器的意义与背景从带有干扰的原始信号中提取有效信号并对其进行处理,几乎是所有学技术领域都必然涉及的重要环节。信号处理的目的是对信号的特征参数进行估计,或将信号转变为人们所需要的形式。信号处理的任务主要是对信号进行采样接收、频谱分析、域变换、综合和估值识别等。在自然界中,信号均以声、光、磁、热、电等形式广泛地存在着,这些信号的幅度都随时间连续变化,这种信号被称为模拟信号;而为了对信号进行深入和细致地分析,又人为引入另一种信号,即数字信号,其特点是信号的幅度随着时间离散变化。据此,信号处理系统可以分为两种:模拟信号处理系统和

14、数字信号处理系统。在传统的电子技术中,信号的采集和处理往往建立在模拟电路的基础上,即传统的信号处理系统通常由电阻、电容、电感和晶体管等分立元器件构成。到了20世纪60年代,由于大规模集成电路和计算机的迅速发展,数字技术得到了较快提升,这使数字信号被广泛应用于信号处理的设想成为可能,数字信号处理系统应运而生。而数字信号处理系统通常是数值算法的体现,故这种系统既可以通过硬件电路实现,也可以通过软件编程实现。随着电子通信产业的发展,单位时间内有越来越多的数据等待发送和接收,这就对信号处理系统的实时性提出了越来越高的要求。与模拟信号处理系统相比,数字信号处理系统具有更好的灵活性和稳定性,更高的精度和性

15、能等优势,同时也便于大规模集成。所以,数字信号处理系统正逐渐取代模拟信号处理系统,而被广泛应用于语音、图像、通信、雷达1、医学、地质、航空航天、仪表自动化等工程领域中,数字信号处理技术也越来越受到人们的关注。所谓数字信号处理,主要是指利用计算机或专用处理设备对数字信号进行分析、变换、综合、估计与识别等加工处理的过程。数字信号处理的核心内容是快速傅里叶变换和数字滤波技术。人类社会发展至今,社会主体本质上基本己经是数字化网络化的信息世界,所以对数字信号的处理与我们的生活密切相关,不可分割:军事上数字信号处理关系到尖端武器的性能以及国家和人民的安全;工业上它与我们所用到的各类电子产品的成本和质量(也

16、就是产品竟争力)休戚相关2。在数字化的社会活动中,数字信号的处理关系到各行各业的每个角落,每个学科都有用到数字信号处理的地方,而数字信号处理也以花样繁多的形式与各个学科形成交叉学科,带动国民经济的快速发展。然而在全球数字信号处理(DSP)技术领域中,力能扛鼎的角色非数字滤波器莫属3。数字滤波技术作为数字信号处理的重要组成部分,其主要任务是从带有噪声干扰的信号中提取所需要的有效信号,同时抑制不需要的噪声信号。这项技术通常被应用于各种数字系统中对信号进行前置处理的模块。值得一提的是,数字滤波技术不会涉及模拟滤波技术中所必须用到的电感和电容等元器件,因此能够从根本上克服模拟滤波技术所无法避免的电压漂

17、移、温度漂移和噪声等问题4。而且,通过对数字信号处理芯片进行编程还能够方便地改变数字滤波器的特性。我们把一个能够接收数字信号序列,然后将接收到的信号序列经过某个具有步骤有穷性和精度有限性的算法(该算法会将输入信号序列进行数学变换处理),然后输出符合使用者要求的选择性传输特性的数字信号的数字信号变换系统叫做数字信号滤波器,该系统使输入的信号序列的频率谱图和振幅谱图发生形变,保留或者增强有效的信号频率部分,摒弃或者尽量抑制无效的信号频率部分,最后把经过上述处理的数字信号作为输出信号5。按照滤波器的作用范围,我们把数字信号滤波器和模拟信号滤波器分为带通、高通、低通若干种,这两种滤波器的基本工作原理基

18、本相同,特性略有不同6。数字滤波器的特点是:灵活性强,可随时对滤波器频谱进行调整,滤波稳定性高精度高,而且数字化的数据处理本身就比模拟信号处理优越很多7。按照数字滤波器的的脉冲响应时域特性我们把其分为两种:无限脉冲响应(IIR, Infinite Impulse Response)滤波器和有限脉冲响应(FIR ,Finite Impulse Response)滤波器8-10。数字滤波器应用广泛:在家用电器领域,电视机、电子计算机、收音机和影碟机等都需要滤波器;在医疗设备领域,X光扫描仪、CT扫描仪、核磁共振仪以及其他扫描设备均需要数字滤波器;在军事科技领域,各类通讯设备、雷达监控设备、载具导航

19、系统以及飞机坦克潜艇等内部电控系统都离不开数字滤波器。一言以蔽之,在现代社会中,凡是有电子设备参与的领域,都离不开数字滤波器所发挥的巨大作用。综上所述,以数字技术代替模拟结构来实现滤波功能,将具有更大的优势和更加广阔的应用前景。而且,对数字滤波技术的研究,也将促进数字信号处理在数字图像处理、模式识别及谱分析等领域中的应用。1.2 数字滤波器的分类按照不同的分类方法,数字滤波器有许多种类,但总起来可以分成两大类:经典滤波器和现代滤波器。经典滤波器的特点是其输入信号中有用的频率成分和希望滤除的频率成分各占有不同的频带,通过一个合适的选频滤波器滤除干扰,得到纯净信号,达到滤波的目的。但是,如果信号和

20、干扰的频谱相互重叠,则经典滤波器不能有效地滤除干扰,最大限度地恢复信号,这时就需要现代滤波器,例如维纳滤波器、卡尔曼滤波器、自适应滤波器等最佳滤波器。现代滤波器是根据随机信号的一些统计特性,在某种最佳准则下,最大限度地抑制干扰,同时最大限度地恢复信号,从而达到最佳滤波的目的。经典数字滤波器从滤波特性上分类,可以分成低通、高通、带通、带阻等滤波器。但是理想的滤波器是不可能实现的,因为它们的单位脉冲响应均是非因果且无限长的,我们只能按照某些准则设计滤波器,使之在误差容限内逼近理想滤波器,理想滤波器可作为逼近的标准。另外,需要注意的是,数字滤波器的频率响应函数H(ejw)都是以2位周期的,低通滤波器

21、的通频带中心位于2的整数倍处,而高通滤波器的通频带中心位于的奇倍数处,这一点和模拟滤波器是有区别的。一般在数字频率的主值区-,描述数字滤波器的频率响应特性。数字滤波器从实现的网络结构或者从单位脉冲响应长度分类,可以分成无限长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器。它们的系统函数分别为: (1-1) (1-2)(1-1)式中的H(z)称为N阶IIR数字滤波器系统函数;(1-2)式中的H(z)称为N-1阶FIR数字滤波器系统函数。 根据滤波器对信号处理作用又将其分为选频滤波器和其他滤波器。上述低通、高通、带通和带阻滤波器均属于选频滤波器,其他滤波器有微分器、希尔伯特滤波器

22、、频谱校正等滤波器11。1.3 论文工作与编排鉴于数字滤波器具有上述许多优于模拟滤波器的特点以及重要的应用背景,本文将基于数字信号处理和数字滤波技术的基本原理,对数字滤波器的硬件实现方案以及有助于系统性能提升和模块结构简化的方法进行讨论。同时,也将借助MATLAB工具软件,完成对一款32阶FIR数字滤波器的设计和一款4阶IIR数字滤波器的设计。本文共分为五章,各章内容具体安排如下:第1章 为绪论,主要概述了数字滤波器的应用前景和研究意义,MATLAB软件简介应用以及本论文的篇章安排。第2章 为基础理论,主要介绍了与 FIR和IIR 数字滤波器设计密切相关的数字滤波技术基本概念和重要原理。第3章

23、 为基于MATLAB的FIR滤波器设计,主要介绍了设计FIR数字滤波器时所应用的Fdatool工具,运用Fdatool工具选择要设计的方法和滤波器参数,然后计算并最后导出所设计滤波器的参数,最后进行了仿真。第4章 为基于MATLAB的IIR滤波器设计,主要进行IIR滤波器的设计和仿真工作。第5章 为结论,主要是对本文所完成 FIR和IIR 数字滤波器设计工作的一个总结,同时,也对后续工作进行了展望。1.4 本章小结本章主要阐述了数字滤波技术的应用背景和研究意义,MATLAB的介绍,并对本论文各章节的内容编排做了总体性的介绍。 第2章 理论基础2.1 系统设计的理论依据2.1.1 数字滤波器概述

24、 所谓数字滤波器12,是指输入、输出均为数字信号,通过数值运算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。若其系统函数为H(Z),其脉冲响应为h(n),对输入时间序列为x(n),若输出时间序列为y(n),则它们在时域内有如下关系: (2-l)在Z域内有如下关系: (2-2)式中x(z)!y(z)分别是x(n)、y(n)的z变换。在频域内有如下关系: (2-3)式中h(jw)是数字滤波器的频率特性;x(jw)、y(jw)分别是x(n)、y(n)的频谱,而w是数字角频率。对于有限冲激响应数字滤波器(FIR)其输出y(n)只取决于有限个过去和现在的输入x(n),x(

25、n一1).x(n一m);对于无限冲激响应数字滤波器(IIR),它的输出不仅取决于过去和现在的输入,还跟过去的输出有关。FRI和IIR滤波器不论是在性能还是在设计方法上都有着很大的区别,FIR滤波器可以根据给定的频率特性直接设计,而IIR滤波器则需要使用通用模拟滤波器设计方法进行设计,但是不管FRI和IIR,其设计步骤如下13: (1)确定指标:在设计一个滤波器前必须有一些指标,这些指标需要根据应用确定。(2)模型逼近:一旦确定了指标就可以利用一些基本原理和关系式提出一个滤波器模型来逼近给定的指标体系。这是滤波器设计所要研究的主要问题。(3)实现:上面两步结果得到的滤波器通常是以差分方程系统函数

26、或脉冲响应来描述的。根据这个描述用硬件和计算机软件来实现。对于许多应用来说,数字滤波器一般具有如下差分方程: (2-4)式中,x(n)为输入序列,y(n)为输出序列,ak和bk为滤波器系数,若bk=0,则有: (2-5) 式(2-5)就是FIR滤波器的差分方程,不失一般性,下面我们用 (2-6)来表示FIR滤波器的差分方程,对式(2-6 )进行Z变换,整理后可得到FIR滤波器的传递函数: (2-7)在数字滤波器中,FIR滤波器具有如下几个优点: (1)可以在幅度特性随意设计的同时保证精确严格的线性相位; (2)由于FIR滤波器的单位脉冲h(n)是有限长序列,因此FIR滤波器没有不稳定的问题;

27、(3)由于FIR滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归型结构中的极限震荡等不稳定现象,误差较小; (4) FIR滤波器可采用FFT算法实现,从而提高运算效率。设数字滤波器的传递函数H(ejw)用下式表示: (2-8)|H(ejw)|为幅频特性,(w)为相频特性。幅频特性表示信号通过滤波器后频率成分的衰减情况,相频特性则反应各频率成分通过滤波器后在时间上的延时情况。通常,选频滤波器的指标要求都以幅频特性给出,对相频特性不作要求,如果需要对输出波形有严格要求,如语音合成、波形传输等,则要求设计线性相位数字滤波器。数字滤波器的参数指标与模拟滤波器类似,它们是wp, ws,助.Rs

28、.其意义与模拟滤波器的参数意义相同,这里不再说明。2.1.2 FIR和IIR数字滤波器的比较在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。因此,指标的形式应为频域中的幅度和相位响应。在通带中,通常希望具有线性相位响应。在FIR滤波器中可以得到精确的线性相位。在IIR滤波器中通带的相位是不可能得到的,因此主要考虑幅度指标。IIR数字滤波器的设计和模拟滤波器的设计有着紧密的联系,通常要设计出适当地模拟滤波器,再通过一定的频带变换把它转换成为所需要的数字IIR滤波器。此外,任何数字信号处理系统中也还不可避免地用到模拟滤波器,比如A/D变换器前的抗混叠滤波器及D/A转换后的平缓滤波

29、器,因此模拟滤波器设计也是数字信号处理中应当掌握的技术。从性能上来说,IIR数字滤波器传递函数包括零点和极点两组可调因素,对极点的唯一限制是在单位圆内。因此可用较低的阶数获得高的选择性,所用的存储单元少、计算量小、效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。FIR滤波器传递函数的极点是固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能,所以要达到高的选择性,必须用高的阶数,对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果成本高信号延时也较大,如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样

30、大大增加了滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位14。从结构上看,IIR滤波器必须采用递归结构来配置极点,并保证极点位置在单位圆内。由于有限字长效应,运算过程中将对系数进行舍入处理,引起极点的偏移,这种情况有时会造成稳定性问题,甚至造成寄生振荡。相反,FIR滤波器只要采用非递归结构,不论在理论上还是实际的有限精度运算中都不存在稳定性问题,因此造成的频率特性误差也较小。此外FIR滤波器可以采用快速傅立叶变换算法,在相同的阶数条件下运算速度可以快的多15。从设计工具看,IIR滤波器可以借助模拟滤波器的成果,因此一般都有有效的封闭形式的设计公式可供参考,计算工作量比较小,而且对

31、计算工具的要求不高;FIR滤波器一般没有封闭形式的设计公式。窗函数法设计FIR滤波器也仅给出了窗函数的计算公式,但是在计算通带阻带衰减时无显示表达式。一般FIR滤波器的设计只有计算程序可循,因此它对计算工具要求较高16。在设计和实现上FIR滤波器具有如下优越性:(1)相位响应可为严格的线性,因此它不存在延迟失真,只有固定的时间延迟。(2)由于不存在稳定性问题,所以设计相对简单。(3)只包含实数算法,不涉及复数算法,不需要递推运算,长度为M的滤波器(阶数为M-1),它的计算值约为M/2。另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有分段常数特性的滤波器,如低通、高通、带通和带阻等

32、,往往脱离不了模拟滤波器的格局。而FIR滤波器则要灵活的多,尤其是他易于适应某些特殊应用,如构成数字微分器或希尔伯特变换器等,因而有更大的适应性和广阔的应用领域。从上面的简单比较可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。从使用要求来看,在对相位要求不敏感的场合,如语言通信等选用IIR较为合适,这样可以充分发挥其经济高效的特点;对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高。如果有条件,采用FIR滤波器较好。当然在实际应用中可能还要考虑更多方面的因素。2.2 MATLAB中的滤波器设计工具MATLAB共有五种设计FIR数字滤波器的方

33、法。第一种是窗函数法,它的设计思路和前面介绍的窗函数设计法相同,对应的MATLAB函数有fir1、 fir2、Kaiserord;第二种方法是含过渡带的设计方法,它利用等纹波或者最小均方取逼近理想滤波器的频域响应,其中包含了切比雪夫逼近设计方法,对应的MATLAB函数有firls, remenz, remezord;第三种方法是最小二乘约束设计法,它是使设计的滤波器和理想滤波器的误差在整个频段上积分,使得积分值最小,对应的MATLAB函数有fircls, fircls1;第四种设计方法是非线性相位滤波器设计方法,它设计出FIR滤波器是非线性相位的,对应的MATLAB函数为cremez ;第五种

34、设计方法是升余弦设计方法,采用升余弦函数将进行滤波器设计,对应MATLAB函数为firrcos。由于滤波器设计在工程上常常看到,而它的设计相当复杂,就提出了开发滤波器设计综合性工具的需求。在MATLAB环境下,利用它已有的大量滤波器设计函数,加上日益成熟且方便的界面技术,己经可以把所有的设计方法和过程集成在一起,构成一个滤波器综合设计的工具。在信号处理工具箱中,这个工具的名称为fdatool(Filter Design and Analysis Tool 的缩写)。在MATLAB命令窗中,键入fdatool,就得到如图2-1所示的界面。这个工具界面包含了全部滤波器设计的功能。FDATool界面

35、左下侧排列了一组工具按钮,其功能分别如下所述: 滤波器转换(TransForm Filter) 设置量化参数(Set Quantization Parameters) 实现模型(Realize Model) 导入滤波器(Import Filter) 多速率滤波器(Multirate Filter) 零极点编辑器(Pole-zero Editor) 设计滤波器(Design Filter)界面最上面的一行是文字菜单,第二行是图标按钮菜单:下面是主画面菜单区,它大体也分为上下两半,为了方便,我们分别称为上、下画面菜单区;最下面正中有一个【design filter】按钮,那是在菜单中设定全部参数后

36、指挥计算机进行设计的确认钮。文字菜单各项都有下拉式的二级菜单,主要用来对本次设计过程命名、建档、存储和输出打印等,可自行查看和分析。把文字菜单中常用的二级菜单项突现出来就构成了图标按钮菜单,目的是为了更快捷地操作。上半画面是用来显示设计结果的。其中,右半部是图形画面,它的大小和显示内容受上述按钮的控制。左半部显示当前滤波器的结构。它还设有一个【Convert Structure】按钮,用以使用户得到不同滤波器结构下的系数,按下这个按钮,将出现一个小视窗,其中的复选框提供了八种结构可以选择,确认后,从【Filter Coefficients 】钮所得到的就是相应结构下的滤波器系数。这些滤波器系数

37、可以由【File】中的【Export】导出,输出变量的名称可以指定,导出的目标位置可以是MATLAB工作空间,或者其他指定的文件。另外,它的下部还有一个【Turn Quantization On】(量化)选择框,在开始设计时它总是空白的,一般是在滤波器初步设计已经完成,要考察系数量化对滤波器的影响时再把它打开,这时,图像中将同时显示量化前后滤波器的特性,用户能够方便地看出系数量化对滤波器性能的影响。但是在打开量化钮前应该输入很多参数,如果事先没有设定参数,那么用的是程序中缺省值,不会符合用户实际。要设定这些参数要先在下半画面的顶部单击【Set Quantization Parameters】页

38、面标签,这时整个下半画面都会发生改变。图2-1 滤波器设计工具的启动界面下半画面当前处在【Filter Design】页面上,这个页面是用来输入滤波器的设计参数的,它分为4栏,从左到右依次为:【 Filter Design】,【 Filter Order】,【Frequency Specifications 】,【Magnitude Specifications】。在【Filter Design】栏中,上面五个圆圈是“五选一”的选择框,如果是简单选频类的滤波器,则在前四项中任选一项,如果是其他类,就要选定第五项,然后在它右方的复选框中用下拉菜单来选定具体类型,这里有数字微分器,希尔波特变换器,

39、还有一些我们未接触过的其他滤波器,还有选择FIR或IIR滤波器类型,IIR中有巴特沃斯、切比雪夫I、切比雪夫II和椭圆4类,FIR中则有等波动法、最小二乘法和窗函数法三种。而实际设计的过程非常简单,先在下半画面的各栏中,正确填写滤波器的要求和指标,然后按最下方正中的“设计”按钮,结果就会在上半画面中显示出来,需要看何种图形,就可按相应的按钮,取【full view analysis】时,图形的曲线被放在单独的视窗内,就可以图形方式存储。需要滤波器系数时,可以如前所述,用【Export】方式把它导出到适当的地方。2.3 本章小结 本章主要介绍了数字滤波器的特点、FIR和IIR数字滤波器的比较、M

40、ATLAB中的滤波器设计工具FDATOOL的使用。第3章 基于MATLAB的FIR数字滤波器设计3.1 MATLAB软件简介3.1.1 MATLAB介绍MATLAB ( Matrix Laboratory,是一款商业数学软件,用途广泛功能强大,可以用于各类数据分析,数学算法开发,数据可视化以及数值计算17。这款软件由MATLAB与Simulink两大部分组成,是一种高级技术计算语言,同时也是一个交互式环境18。在该环境中,我们可以轻松实现线性和非线性静态、动态系统的建立与模拟仿真等功能19。该软件的最大优点是将多种强大功能交互式集成到一起,为众多科学学科提供了解决日趋繁杂的数学问题的方案,其功

41、能的强大是以往传统的非交互式语言所无法比拟的,是当今世界科学计算软件中的翘楚20。我们接下来了解一下MATLAB软件的系统组成:1.MATLAB开发环境:指软件的操作界面,在该界面中我们可以使用大量MATLAB自带函数和各种工具(包括编辑器和调试器以及信息浏览器),功能齐全,用途广泛21。2 .MATLAB语言:MATLAB编程语言是一种面向对象语言,语言中的数据结构、控制语句及输入输出界面都十分高层次,值得专门学习。3 .MATLAB应用程序界面:这是一个功能强大的程序库,通过这个界面我们可以在其他可以与MATLAB语言进行交互的语言(比如c语言和Fortran语言)中调用MATLAB的子程

42、序和子过程,通过编写可交互程序语句来生成可以独立执行的EXE文件22。4 .MATLAB数学函数库:MATLAB数学函数库覆盖了大量数值计算算法函数,简单的包括三角函数,复数计算以及级数展开等,复杂的包括快速傅里叶变换、矩阵运算以及复杂函数多项式展开等等23。5 . MATLAB图像生成:这个功能很具特色且功能强大,通过MATLAB我们可以把多种数据用图像表示出来,包括矩阵和数组,生成的图像的各种参数(颜色外观形状等)都可以由使用者自定义24。本文中我们使用MATLAB进行数字滤波器的设计和模拟仿真,滤波器参数可以随时调整,生成图像便捷直观。3.1.2 S-Function介绍 S-Funct

43、ion 可以使用MATLAB®,C,C+,Ada,或Fortran 语言来编写。使用MEX 实用工具,将C,C+,Ada,和Fortran 语言的S-Function 编译成MEX-文件,在需要的时候,它们可与其它的MEX-文件一起动态地连接到MATLAB 中。 S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。S-Function 的形式是非常通用的,且适用于连续、离散和混合系统。 S-function 为你提供了一种在Simulink 模型中增加自制块的手段,你可以使用MA

44、TLAB,C,C+,Ada,或Fortran 语言来创建自己的块。按照下面一套简单的规则,你可以在S-function 中实现自己的算法。在你编写一个S-Function 函数,并将函数名放置在一个S-Function 块中(在用户定义的函数块库中有效)之后,通过使用masking 定制用户界面。3.2 FIR滤波器基础简介3.2.1 FIR滤波器的基本特性数字FIR(Finite Impulse Response)滤波器指有限脉冲响应数字滤波器,这是一种在数字型信号处理领域中应用非常广泛的基础性滤波器元件,数字FIR滤波器的特点是能够在输入具有任意幅频特性的数字信号后,保证输出数字信号的相频

45、特性仍然保持严格线性25。另外,FIR数字滤波器具有有限长的脉冲采样响应特性,比较稳定。因此,FIR滤波器的应用要远远广于IIR滤波器,在信息传输领域、模式识别领域以及数字图像处理领域具有举足轻重的作用。但比较让人头疼的是,只有当FIR滤波器的阶数达到IIR滤波器的几倍到十几倍的时候,其幅度响应才能比肩IIR滤波器。因此,只有当使用者对滤波器的特性要求很高时,才会选择FIR数字滤波器,另外,FIR滤波器的滤波过程一般需要更多的运算时间26。数字FIR滤波器的工作原理:模拟信号首先经由AO转换器件(逐次逼近型A/D转换器速度较快)被转化成数字信号,进入滤波器进行处理后,形成一长串数据序列,如果有

46、需要的话再将该数据序列输入到外接D/A转换器,转化成为模拟信号使用27。3.2.2 主流FIR滤波器的硬件实现方法(1) 可编程逻辑器件:可编程逻辑器件包括CPLD以及FPGA,对于这两种内部逻辑模块功能十分齐备而且内部资源十分丰富的可编程逻辑器件来说,正好适合用于实现结构并行度极高的FIR数字滤波器,我们在对比可编程逻辑器件与DSP芯片的优劣后发现,该方法的优势在于更强大的并行性和可扩展性28。(2) 专门用于数字信号领域的单片机:目前一般的数字信号处理芯片,内部预写入了大批DSP函数,我们可以直接调用这些函数来轻松实现FIR滤波器的各项功能,但由于不同公司的不同系列的数字信号处理芯片编程代

47、码大相径庭,极大地拖延了开发速度,而且该方法实现的滤波器的速度受芯片性能影响较大29。(3) 数字集成电路:使用单片数字集成电路或者把多片专门用于实现滤波器功能的数字集成电路级联起来,我们可以轻松实现FIR数字滤波器功能。但是单片集成电路性能不足,而多片级联集成电路的体积太大,功耗过高,所以该方法应用前景不太好30。3.3 MATLAB滤波器工具设计FIR滤波器实例3.3.1 FIR滤波器的设计(1)本文主要是采用MATLAB设计工具FDAtool来设计滤波器,FDAtool界面简单明了:界面主要分为上下两大部分,特性区和滤波器设计区(Design Filter)。特性区用来实时显示滤波器的多

48、种特性,滤波器设计区比较复杂,该区主要用来设置滤波器的各种参数,主要包括:滤波器类型选项(Filter Type),该选项中可以选择滤波器的基本类型,包括高通(highpass)、低通(lowpass)、带通(bandpass)、带阻(bandstop)以及特殊FIR滤波器;滤波器设计方法选项(design method),可以选择最小二乘法(least一squares)、窗函数法(window)、巴特沃斯法(butter worth)、车比雪夫I法(chebyshev type I)、车比雪夫II法( chebyshev type II)以及椭圆滤波器法(elliptic);还有滤波器选项,

49、该选项可以选择滤波器阶数,包括指定阶数(specify order)、最小化阶数(minimum order)两个选项,要注意的是,如果选择指定阶数,那么对于specify order=N,实际生成的滤波器阶数为N+1;如果选择阶数最小化,则软件会根据设计者选取的滤波器类型自动选择适用于该类型的最小阶数;还有频率规格选项(frequency specifications),在该选项中我们可以自由定义滤波器的各种频带参数,包括频带截止频率,采样频率。该选项的具体子选项由滤波器类型选项和滤波器设计选项所决定,例如:低通滤波器所需要的参数只有下阻带截止频率和通带下限截止频率两项,该滤波器就可以被独一

50、无二的确定下来,而带通滤波器却需要上阻带截止频率、通带上限截止频率、下阻带截止频率和通带下限截止频率,共四项才能确定性能参数。至于使用窗函数设计数字滤波器,由于窗函数的阶数及类型足可以决定过渡带的参数,不需要另外确定阻带参数,因此设计者只需把滤波器的通带截止频率确定即可。幅度规格选项(magnitude specifications)可以控制特定位置的幅值衰减幅度,例如通带范围内的幅值衰减、上下阻带截止频率的衰减幅度等等,当设计者选择窗函数设计滤波器时,通带截止频率的幅值固定被衰减到6dB无需设计人员自主定义。最后是窗函数选项(window specifications),当设计者使用窗函数设

51、计滤波器时,该选项可以自由定义多种窗函数的各项参数。(2) 下面我们举例说明如何使用FDAtool工具箱设计一个FIR滤波器:在MATLAB中输入fdatool,回车后进入滤波器设计界面,如图3-1所示,然后选择滤波器参数:Response Type选择Lowpass;Design Method选择FIR,Window;Filter Order选择Specify order、31阶(实际为32阶);Options中Window选择Kaiser、Beta为0.5;Frequency Specifications中Units选择Hz、Fs:48000、Fc:10800图3-1 滤波器参数选择 点击

52、Design filter,设计滤波器。 然后就得到了滤波器系数。我们可以通过点击 Analysis 下的Filter Coefficients 来观察滤波器的系数,如图 3-2 所示。 图中所示系数为下面公式(3-1)中的h(k)。 (3-1) 当系数已经计算出来,给定输入信号时就可以计算出输出信号。因此,下面对滤波器进行仿真验证。图3-2 滤波器系数显示3.3.2 FIR滤波器的仿真我们己经知道,数字滤波器的仿真框架图可以通过使用Simulink的功能模块来得出,通过上文中的FDATool方法得到的数字滤波器也可以被导入到该功能中,仿真框架图在仿真过程中随时可以被双击,双击后可以根据需要来

53、改变参数,我们就可以得到在不同参数条件下的模拟仿真结果。而FIR数字滤波器则可以通过S-function来代替。Simulink仿真图如图3-3所示。图中九个输入信号分别是50Hz、100Hz、150Hz、200Hz、250Hz、300Hz、350Hz、400Hz和常数50。Powergui则是用来观察和分析信号的。S-function是通过已计算出的滤波器系数编写程序实现公式(3-2)来代替滤波器。 (3-2) 点击仿真开始按钮,双击Scope2得到滤波前后的波形。如图3-4,上部分为滤波前波形,下部分为滤波后波形。可以明显看出滤波效果。图3-3 Simulink 仿真图图3-4 滤波前后波

54、形 下面通过powergui器件观察滤波器的滤波效果。双击powergui器件,选择FFT Analysis观察滤波前后波形。分别如图3-5、图3-6所示,可以看出滤波后基本上很多频率的波形都得到了大幅度的滤除。图3-5 滤波前FFT analysis图3-6 滤波后FFT analysis下面给出S-function中程序内容:#define S_FUNCTION_NAME f2/#define S_FUNCTION_NAME f2/#define S_FUNCTION_NAME f2#define S_FUNCTION_LEVEL 2#include "simstruc.h&qu

55、ot;/#include "simstruc.h"#include "math.h"#define pi 3.141592#define U(element) (*uPtrselement) /* Pointer to Input Port0 */#define ModRate 0.8 ;/#define k 0.8;floatstatic float t;float t1;static float x32;static float y32;static float coff32;float sum;float average;static void c

56、alc(void);/*=* * S-function methods * *=*/ /* Function: mdlInitializeSizes = * Abstract: * The sizes information is used by Simulink to determine the S-function * block's characteristics (number of inputs, outputs, states, etc.). */static void mdlInitializeSizes(SimStruct *S) ssSetNumSFcnParams(

57、S, 0); /* Number of expected parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S) return; /* Parameter mismatch will be reported by Simulink */ ssSetNumContStates(S, 0); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, 1) return; ssSetInputPortWidth(S, 0, 1); ssSetInputPortDirectFe

58、edThrough(S, 0, 1); if (!ssSetNumOutputPorts(S, 1) return; ssSetOutputPortWidth(S, 0, 1); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); /ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE); /* Take care when

59、specifying exception free code - see sfuntmpl_doc.c */ ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE); average=0; sum=0; /* Function: mdlInitializeSampleTimes = * Abstract: * Specifiy that we have a continuous sample time. */static void mdlInitializeSampleTimes(SimStruct *S) ssSetSampleTime(S, 0, 0.0002); ssSetOffsetTime(S, 0, 0.0); ssSetModelReferenceSampleTimeDefaultInheritance(S); /#define MDL_INITIALIZE_CONDITIONS/* Function: mdlInitializeConditions = * Abstract: *

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!