基于MATLAB下的FIR滤波器的设计实现.docx
- 文档编号:11801999
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:39
- 大小:300.34KB
基于MATLAB下的FIR滤波器的设计实现.docx
《基于MATLAB下的FIR滤波器的设计实现.docx》由会员分享,可在线阅读,更多相关《基于MATLAB下的FIR滤波器的设计实现.docx(39页珍藏版)》请在冰点文库上搜索。
基于MATLAB下的FIR滤波器的设计实现
摘要
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,本文主要研究在MATLAB环境下,FIR数字滤波器的几种典型设计方法,并且分别对其进行仿真实现。
对于FIR数字滤波器的设计:
本文分别用了窗函数设计法、最优等波动设计法、约束最小二乘法设计法、任意响应滤波器设计方法设计FIR滤波器。
其中窗函数设计法重点在于选择某种恰当的窗函数和一种合适的理想滤波器,设计方法比较简便;最优等波动法解决了窗口法设计技术精度的困难,并使误差均匀分布;约束最小二乘法设计法使用了平方误差最小化的技术;而任意响应滤波器设计中可以设计任意复杂响应的FIR滤波器。
各种设计方法都有利有弊,在实际设计中,可以通过设计要求来选择合适的设计FIR滤波器方法。
关键词:
数字滤波器;模拟滤波器;脉冲响应;双线性变换;幅频特性
Abstract
Thedigitalfiltermayusethesoftwareorthedesignspecial-purposedigitalprocessinghardwaretwowaysrealize,ThisarticlemainresearchunderMATLABenvironment,FIRdigitalwavefilterseveralmodeldesignmethod,Andseparatelycarriesonthesimulationexperimenttoit.
DesignofFIRdigitalwavefilter:
Separatelywithwindowlaw,mostexcellenttofluctuatelawofdesigning,restrainleastsquaremethodfromdesignlaw,wantontoresponddesignmethodofthewavefilterdesignFIRwavefilter.Amongthemwindowlawliesinwithemphasischoosessomekindofappropriatewindowlawandonekindofappropriateidealfilter,Thedesignmethodquiteissimple;Themostexcellentfluctuatelawhassolvedthewindowlawdesigntechnologyprecisiondifficulty,Andcausestheerroneousuniformdistribution;Therestraintleastsquaresmethoddesignlawhasusedthesquareerroneousminimumtechnology;andwantoncandesignwantoncomplicatedFIRwavefilterthatrespondedwhilerespondingthewavefilterdesign.Eachkindofdesignmethodalladvantagesareaccompaniedbydisadvantages,Inactualdesign,MaychoosetheappropriatedesignFIRfiltermethodthroughthedesignrequest.
Keywords:
Digitalfilter;Analogfilter;Thepulseisresponded;
Pairisvariedlinearly;Acharacteristicfrequently
第1章概述
1.1课题研究的目的和意义
数字信号处理(DSP,digitalsignalprocessing)是从20世纪60年代以来,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。
它的重要性日益在各个领域的应用中表现出来。
简言之,数字信号处理是把信号用数学或符号表示的序列,通过计算机或通用(专用)信号处理设备,用数字的数值计算方法处理(例如滤波、变换、压缩、增强、估计、识别等),以达到提取有用信息便于应用的目的。
数字滤波器是将输入数字序列变为输出数字序列的数字信号处理器。
与模拟处理相比,数字处理有灵活性强、精度高、处理成本低以及对环境没有特殊要求等优点。
它不仅能实现模拟处理的大部分功能,而且还能完成模拟处理由于成本、可靠性等原因而无法具体实现的功能。
例如在信号处理中,滤波就占有着十分重要的地位。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
数字滤波在通信、图像编码、语音编码、雷达等许多领域中也有着十分广泛的应用[1]。
数字滤波器是通过对抽样数据进行数学处理来达到频域滤波的目的。
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现。
用软件来实现数字滤波器优点是:
随着滤波器参数的改变,很容易改变滤波器的性能。
1.2国内外发展现状
现代滤波理论研究的主要内容是从含有噪声的数据记录(又称为时间序列)中估计出信号的某些特征或信号本身。
一旦信号被估计出,那么估计出的信号将比原信号会有高的信噪比。
现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征(如自相关函数、功率谱函数等等)导出一套最佳的估值算法,然后用硬件和软件实现。
目前现代滤波器主要有:
维纳滤波器、卡尔曼滤波器、线性预测器、自适应滤波器等,很多专家将基于特征分解的频率估计及奇异值分解算法都归入现代滤波器的范畴。
GR雷达信号处理分析系统中的信号分析中的滑动平均谱和常规处理中的反褶积运算采用了现代处理的部分功能。
MATLAB是美国Mathworks公司推出的一套用于工程计算的可视化高性能语言与软件环境。
它集成了数值计算、符号计算、可视化建模、仿真和图形处理等功能。
MATLAB语言运算符丰富,既具有结构化的控制语言,又能面向对象编程,语法限制不严格,具又强大的图形功能和功能强大的工具箱。
它为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。
它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个交互式的工作环境中。
MATLAB推出的工具箱使各个领域的研究人员可以直观方便地进行科学研究、工程应用,其中的信号处理(signalprocessing)、图像处理(imageprocessing)、小波(wavelet)等工具箱为数字滤波研究的蓬勃发展提供了有力的工具[2]。
其中MATLAB的信号处理工具箱是专门应用于信号处理领域的专用工具箱,它的两个基本组成就是滤波器的设计与实现部分以及谱分析部分。
工具箱提供了丰富而简便的设计,使原来繁琐的程序设计简化成函数的调用。
只要以正确的指标参数调用相应的滤波器设计程序或工具箱函数,便可以得到正确的设计结果,所以使用非常方便。
MATLAB也是大量的计算机仿真软件中的优秀代表,它在科学研究特别是电子信息科学中有着极为广泛的应用。
MATLAB现已被广泛应用于数学、通信、信号处理、自动控制、神经网络、图形处理等许多不同学科的研究中[3]。
本文着重研究了FIR滤波器的设计原理,以及基于MATLAB下FIR滤波器的设计方法、设计步骤,并对一个具体应用进行实例仿真。
1.3本文的研究工作
本文着重研究了基于MATLAB下的FIR滤波器的设计实现。
本文具体内容安排如下:
第2章:
MATLAB简介,简单介绍MATLAB、M文件及仿真技术的基本原理;
MATLAB信号处理工具箱-----FDATool;
第3章:
数字滤波器,介绍了数字滤波器的分类,FIR的基本结构以及优缺点;
第4章:
FIR滤波器的设计,详细的介绍了FIR滤波器的设计方法:
窗函数法设计FIR滤波器、最优等波动设计法、约束最小二乘FIR滤波器设计法、任意响应滤波器设计法,并举例说明FIR滤波器的应用。
第2章MATLAB简介
MATLAB(MatrixLaboratory的缩写)是Mathworks公司开发的一种集计算、图形可视化和编辑功能于一体的功能强大、操作简便、易于扩充的语言,是目前国际上公认的优秀的数学应用软件之一。
MATLAB系统的强大功能是由其核心内容(语言系统、开发环境、图形系统、数学函数库、应用程序接口等)和辅助工具箱(符号计算、图象处理、优化、统计和控制等工具箱)两大部分构成。
MATLAB使用方便、人机界面直观、输出可视化、深受用户欢迎,且MATLAB的版本不断升级、功能不断增强。
目前,MATLAB被广泛应用在科算运算领域里,包括数值计算、符号计算、数据拟合、图形图象处理、系统模拟和仿真分析等等。
它已经成为一个集概念设计、算法开发、建模仿真、实时实现于一体的集成环境,而且拥有许多衍生的子集工具。
2.1MATLAB系统组成
MATLAB系统以MATLAB为核心,由一系列相关软件(也称为组件)构成。
其基本构成如图2.1所示
图2.1MATLAB系统的基本组成
MATLAB是整个系统的基础,它提供完整的操作环境和核心计算函数,完成各种数学运算、数据分析、图形显示和程序编辑调试等功能。
Simulink提供了动态系统建模仿真的交互环境,它与MATLAB一起共同构成整个MATLAB系统的核心。
Simulink可以与其他组件配合使用以扩展其功能,例如,与实时组件(Real-timeWorkshop)及代码生成工具相结合,可以对模型进行实时仿真,并把模型转化为基于不同硬件目标的可执行C代码;与相关的工具箱和专业模块库相结合,可完成各种复杂动态系统(如机械、电子、控制等系统)的建模仿真[4]。
单就本文而言,主要涉及FDATool工具箱。
FDATool(FilterDesign&AnalysisTool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox)。
FDATool可以设计几乎所有的常规滤波器,包括FIR和IIR的各种设计方法,它操作简单,方便灵活。
FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性,DesignFilter部分主要分为:
FilterType(滤波器类型)选项,包括Lowpas(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。
DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevType(切比雪夫型)法、ChebyshevType(切比雪夫型)法、El2liptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least2Squares(最小乘方)法、Window(窗函数)法,FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数)和MinimumOrder(最小阶数)。
在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1),如果选择MinimumOrder则MATLAB根据所选择的滤波器类型自动使用最小阶数。
FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。
它的具体选项由FilterType选项和DesignMethod选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
MagnitudeSpecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
WindowSpecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数[5]。
2.2MATLAB仿真简介
面对MATLAB的强大功能,人们是怎么将它有效地应用到科学研究中去的呢?
图2.2是一个利用MATLAB进行系统级设计的图示,这是一个人们应用MATLAB进行科学研究及产品开发的实例。
从图中可以看出,进行系统级设计的一般步骤如下:
(1)提出系统各部分的思想及算法,由MATLAB的M语言环境进行仿真验证。
(2)将验证的算法在MATLAB自带的Simulink仿真软件包中进行系统级的仿真。
(3)根据系统级仿真结果,再进行相应的调整。
(4)反复进行
(1)-(3)步骤,知道得到满意的MATLAB算法为止。
(5)将经MATLAB与Simulink验证的算法及系统级设计的结果生成专用代码,在专用硬件设计软件中进行验证。
(6)分析经验证得到的结果,找出设计中存在的缺陷,再次返回MATLAB及Simulink中重复
(1)-(5)步骤,直到得到满意的设计方案。
图2.2应用MATLAB进行系统级设计与仿真
按照上面的步骤利用MATLAB,可使得设计人员在设计时方向更加明确,硬件成本大大降低,科研及产品开发周期大大缩短[6]。
MATLAB的信号处理工具箱是专门应用于信号处理领域的专用工具箱,它的两个基本组成就是滤波器的设计与实现部分以及谱分析部分。
工具箱提供了丰富而简便的设计,使原来繁琐的程序设计简化成函数的调用。
只要以正确的指标参数调用相应的滤波器设计程序或工具箱函数,便可以得到正确的设计结果。
2.3MATLAB的M文件
一般的命令操作,都是在MATLAB的Commandwindow窗口中直接进行的,这样做只能解决一些简单的问题。
在遇到复杂的综合性问题时,Commandwindow窗口将不再合适。
与其他许多编程工具一样,在MATLAB中配备了一个程序编辑与调试的工具环境,即M文件编辑器。
利用M文件编辑器可以创建MATLAB的M脚本文件和M函数文件(M脚本文件和M函数文件统称为M文件)。
这样MATLAB就能够对命令语句执行批处理,并且还可以对任意M函数文件进行保存及重复使用。
如此一来,MATLAB处理问题的功能得到了大大的扩展,方便了用户的使用。
在M文件编辑器的命令窗口中,可以直接输入需要执行的命令语句行,然后保存或者运行调试,一个M脚本文件就自动产生了。
而M函数文件和M脚本文件本质上都是M文件,是M文件编辑器所执行程序语句的载体。
它们形式上的区别在于,M函数文件第一行总是包含以“function”为引导的“函数声明行”,而脚本文件则没有。
它们的实质区别在于,脚本文件只是一串按用户意图简单罗列的MATLAB指令的集合,而函数文件可以完成相互调用等复杂功能,可以解决更复杂的问题。
但应该注意:
此时m件必须保存在MATLAB里,默认的路径为MATLAB里的work文件夹,在调用时直接打开m文件即可调用并运行,否则MATLAB将无法运行该文件[7]。
本文是在MATLAB6.1环境下开发的数字滤波器设计,具有高效、简便及可视化程度高的特点,并居于存储滤波器参数向量的功能,可分析显示滤波器系统的幅频、相频特性,以及对给定信号经所设计的滤波器进行滤波并分析表示了滤波前和滤波后的幅频、相频特性。
第3章数字滤波器
所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。
数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。
3.1数字滤波器的分类
数字滤波器按照不同的分类方法,有许多种类,但总起来可以分成两大类。
一类称为经典滤波器,即一般的滤波器,特点是输入信号中有用的频率成分和希望滤除的频率成分各占有不同的频带,通过一个合适的选频率波器达到滤波的目的。
例如,输入信号中含有干扰,如果信号和干扰的频带互不重叠,可滤除干扰得到纯信号。
但对于一般滤波器如果信号和干扰的频带相互重叠,则不用完成对干扰的有效滤除,对时需要采用另一类所谓的现代滤波器,例如维纳滤波器、卡尔曼滤波器、自适应滤波器等最佳滤波器。
这些滤波器可按照随机信号内部的一些统计分布规律,从干扰中最佳地提取信号。
一般数字滤波器从功能上分类,和模拟滤波器一样,可以分成低通、高通、带通和带阻等滤波器。
它们的理想幅度特性如图3.1所示。
这种理想滤波器是不可能实现的,因为它们的单位脉冲响应均是非因果且是无限长的,我们只能按照某些准则设计滤波器,使之尽可能逼近它,着些理想滤波器可作为逼近的标准用。
另外,需要注意的是数字滤波器的传输函数
都是以
为周期的,滤波器的低通频率带处于
的整数倍数,而高频频带处于
的奇数倍附近,这一点和模拟滤波器是由区别的[8]。
4种情况的数字滤波器幅频响应曲线如图3.1所示。
实际上由于数字滤波器频响的对称特性点,图形只要绘出0到π的情况就可以了。
图3.1数字滤波器的幅频响应
但是,实际中理想滤波器是不可能实现的,原因是频带之间幅度响应是突变的,因而其单位抽样响应是非因果的,所以在通带和阻带之间应该存在一个过渡带,而通带和阻带内滤波器的幅频响应也很难做到严格为1或0,应该设定一个门限[9]。
数字滤波器按照滤波器的网络结构或者单位脉冲响应分类:
可分为IIR滤波器(即无限长单位冲激响应滤波器)和FIR滤波器(即有限长单位冲激响应滤波器)。
它们的函数分别为:
IIR:
H(z)=
(3-1)
FIR:
H(z)=
(3-2)
(3-1)公式中的H(z)称为N阶IIR滤波器函数,(3-2)公式中的H(z)称为(N-1)阶FIR滤波器函数[10]。
3.2数字滤波器的设计简介
3.2.1数字滤波器设计方法概述
数字滤波器是一种用来过滤时间离散信号的数字系统,它是通过对抽样数据进行数学处理来达到频域滤波的目的。
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现。
用软件来实现数字滤波器优点是:
随着滤波器参数的改变,很容易改变滤波器的性能。
IIR滤波器和FIR滤波器的设计方法是很不相同的。
IIR滤波器设计方法有两类,经常用的一类设计方法是借助于模拟滤波器的设计方法进行的。
其设计步骤是;先设计模拟滤波器得到传输函数
,然后将
按某种方法转换成数字滤波器的系统函数
。
这一类方法相对容易一些,这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅;另外,还有一些典型的滤波器类型可供我们使用。
另一类是直接在频域或者时域中进行设计的,由于要解连立问题方程,设计时需要计算机作辅助设计。
FIR滤波器不能采用由模拟滤波器的设计进行转换得方法,经常用的是窗函数法和频率采样法。
还有一种比较有效的方法是切毕雪夫等波纹逼近法,需通过计算机辅助设计完成。
对于线性相位滤波器,通常采用FIR滤波器,其单位脉冲响应应满足一定条件,可以证明其相位特性在整个频带中是严格线性的,这是模拟滤波器无法达到的。
当然,也可以采用IIR滤波器,但必须使用全通网络对其非线性相位特性进行相位校正,这样增加了设计与实现的复杂性[11]。
3.2.2数字滤波器设计方法要求
一般情况下,数字滤波器是一个线性移不变离散系统,利用有限精度算法来实现。
数字滤波器的设计一般包括:
(1)按照任务的要求,确定滤波器的性能要求;
(2)用一个因果稳定的离散线性移不变系统的系统函数去逼近这一性能要求。
系统函数有无限长单位冲激响应(IIR)系统函数及有限长单位冲激响应(FIR)系统函数两种;
(3)利用有限精度算法来实现这个系统函数。
这里包括选择运算结构、选择合适的字长(包括系数量化及输入变量、中间变量和输出变量的量化)以及有效数字的处理方法(舍入、截尾)等;
(4)实际的技术实现,包括采用通用计算机软件或专用数字滤波器硬件来实现,或是用专用的或通用的数字信号处理器来实现。
一般来说,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征。
数字滤波器的频响特性函数
一般为复函数,所以通常表示为:
(3-3)
其中
称为幅频特性函数;
称为相频函数。
幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况[12]。
3.3FIR滤波器特点
3.3.1线性相位FIR滤波器特点
IIR数字滤波器的设计简单方便,特别是采用双线性变换法设计的数字滤波器没有频谱混叠问题,效果较好。
但是IIR数字滤波器有一个较为明显的缺点,就是其相位特性一般是非线性的。
如果滤波器在有效传输频带内的相位特性不线性的,将造成有用信号的传输失真。
在有些实际应用场合,例如数据传输、图象处理等对滤波器的线性相位特性要求颇为严格,所以在这场合中IIR数字滤波器一般不是胜任的。
FIR数字滤波器可设计得具有严格的线性相位,而且其幅度特性可以随意设计。
FIR滤波器的单位冲激响应h(n)是有限长序列,其系统函数的极点位于Z平面原点,因此FIR滤波器不存在稳定问题。
另外,FIR滤波器还可以采用FFT方法实现其功能,从而大大提高了效率,因此,FIR数字滤波器日益引起人们的注意
对于线性相位的滤波器而言,通过滤波器的信号不存在相位失真,只存在固定单位的延迟,而这一点在数字通信、图象处理、语音合成等诸多应用中都极其重要。
FIR数字滤波器具有线性相位特征的条件是它的单位冲激响应h(n)满足偶对称或者奇对称,即:
h(n)=h(N-n-1)或h(n)=-h(N-n-1)(3-4)
其中:
N—FIR滤波器的长度。
若h(n)满足偶对称,则其相位特性
为:
(3-5)
其中:
ω—频率;单位—弧度。
若h(n)满足奇对称,则其相位特性
为:
(3-6)
从频域上看,h(n)是长度为N的实序列,所以h(n)的N点DFT满足共轭对称性,即:
H(k)=H*(N-k)而幅度函数则一定呈偶对称特性,即:
当h(n)为偶对称,信号通过该滤波器时,其通带就产生(N-1)/2点群延迟,滤波器的相频特性是相位过原点的一条直线,其斜率为[-(N-1)/2],其幅频特性相当于对信号低通滤波;当h(n)为奇对称,信号通过该滤波器时,其通带不但产生(N-1)/2点群延迟,还对所有通带内各种频率的信号都有一个90°移相,这相当于信号先经过一个90°移相器,然后再作带通滤波。
FIR数字滤波器的设计方法很多,其中较为常使用的窗函数设计法和频率采样设计法[13]。
3.3.2FIR与IIR滤波器比较
从性能上说,IIR滤波器系统函数的极点可以位于单位圆内的任何位置,因此在相同设计指标下(与FIR滤波器相比),实现IIR滤波器的阶次低,即所用的存储单元少,从而经济效率高。
但是这个高效率是以非线性为代价的;相反,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB FIR 滤波器 设计 实现