数字滤波器.docx
- 文档编号:22895290
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:28
- 大小:469.24KB
数字滤波器.docx
《数字滤波器.docx》由会员分享,可在线阅读,更多相关《数字滤波器.docx(28页珍藏版)》请在冰豆网上搜索。
数字滤波器
第一章数字滤波器概述
数字滤波器是指用有限精度算法实现的,完成信号滤波处理的离散时间线性非时变系统,其输入是一组由模拟信号取样和量化得到的数字量,其输出是经过变换的另一组数子量。
数字滤波器具有高稳定性、高精度、灵活性大等突出特点。
这章主要讲述了数字滤波器的基本概念、及数学建模,以便在后续章节中实现滤波算法做好准备[1]。
1.1数字滤波器的基本概念
滤波器是一种能使有用频率信号通过而同时抑制无用频率信号的电子装置,或者说是可以人为调整参数来满足给定要求的硬件或软件系统[1]。
滤波器也就是一个线性移不变离散系统,其基本输入输出关系为:
(1-1)
其中h(n)为系统的单位冲激响应。
在Z域上,有:
(1-2)
分析式(1.2)可知,只要分母多项式ai(i=1,2,…,n)中有一个不为零,滤波器的的内部就存在反馈环。
这种内部有反馈环的滤波器称为递归型滤波器。
相反,所有系数ai(i=1,2,…,n)都为零的滤波器称为非递归型滤波器由于非递归型滤波器的内部没有反馈环,所以这种滤波器总是稳定的。
从滤波器的单位冲激响应来看,滤波器可以分为IIR滤波器和FIR滤波器。
由于IIR滤波器的传递函数存在0之外的极点,所以单位冲激响应是无限持续的。
因而IIR滤波器与递归型滤波器是一致的。
而FIR滤波器的传递函数不存在0之外的极点,所以,本质上FIR滤波器与非递归型滤波器是一致的。
但是,如果稳定的递归型滤波器与非递归型滤波器级联后,其极点与零点相互抵消,使滤波器在0之外不存在极点,这种滤波器也是FIR滤波器[2]。
这种情况下,由于滤波器内部存在反馈环,因而这种滤波器就成为递归型滤波器。
频率采样滤波器就是这种结构的滤波器。
具有频率选择功能的数字滤波器按功能分类有低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器[3]。
另外,在全频带幅频特性固定的滤波器称为全通滤波器,可用于改善滤波器的相频特性。
1.2数字滤波器的频率特性
1.2.1幅频特性
设采样周期为T,令z=jwT,从z变换理论即可得到H(z)的频率特性,可表示为:
(1-3)
其中,|H(ejwT)|表示数字滤波器的幅频特性;
∠H(ejwT)、Ф(wT)表示相频特性[3]。
另外,H(ejwT)
是数字滤波器的频率传递函数,它表示决定数字滤波器的幅
频特性与相频特性的频率特性。
各种数字滤波器的理想幅频
特性示于图1-1。
1.2.2相频特性
设计数字滤波器时,不仅要考虑它的幅频特性,相频特性也是需要考虑的重要问题。
特别是在线性相位滤波器中,相位的延迟不会造成波形失真,所以在波形要求很高时,滤波器具有线性相位是非常重要的[4]。
我们知道,一般情况下要减小(增大)通带与阻带的波纹,会造成过渡带的截止特性变差(变好)。
根据滤波器的使用目的,其重点是不一样的,在滤波器的阶次确定后,合理的折中方案是必要的。
但是当幅频特性要求很高,不能得到满意结果时,不仅要采用更高阶次FIR滤波器,还必须考虑采用IIR滤波器。
1.3数字滤波器的数学建模
任何线性时不变集总参数离散系统都可用下列数学形式之一来表述其输入输出关系,在时域中,滤波器的功能可以用差分方程(1.4)或卷积公式(1.5)来描述:
(1-4)
(1-5)
在变换域中可用系统传递函数(1.6)来表示:
(1-6)
这三种方法是等价的,从任何一个都能推导出其他两个[5]。
即使用同一类表示方法。
也存在着许多等价的算法结构。
不同的算法会影响系统的某些实际性能。
滤波器的工程实现要用计算机的硬件或软件帮助完成,这需要考虑许多的问题:
(1)计算的效率,即完成整个滤波所需要的乘法和加法次数;
(2)需要的存储量;
(3)滤波器系数的量化影响;
(4)运算中的舍入和截断误差、饱和和溢出。
不同的滤波器结构可以实现同样的传递函数,但不同的算法在满足上述的要求方面是有差别的,有的差别还很大,改变计算结构对提高计算效率和节省存储量能起很大的作用。
1.4本章小结
本章主要讨论了数字滤波器的一些基本概念。
数字滤波器按单位冲激响应可以分为FIR和IIR滤波器,按频率选择功能的数字滤波器按功能分类有低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器。
数字滤波的作用是滤除信号中某一部分频率分量。
信号经过滤波处理,就相当于信号频谱与滤波器的频率相应相乘。
从时域来看,就好似输入信号与滤波器的冲激相应作卷积和。
数字滤波器具有幅度特性和相位特性。
第二章数字滤波器的设计准则及基本步骤
上一章主要讨论的是数字滤波器的数学表示及一些特性和分类的问题,并没有解决如何去设计一个数字滤波器。
众所周知,计算机或DSP芯片处理的是数字信号,那么对于一个数字滤波器,要知道它设计准则。
在这章主要讨论数字滤波器的设计准则和基本步骤。
2.1数字滤波器的设计准则
滤波器设计误差是滤波器的期望响应与实际响应之间的差别。
在FIR滤波器设计中通常采用3种准则[6]。
(1)最小平方(LS)近似,它是期望滤波器与设计滤波器频率响应之间平方误差的平均值。
(2)切比雪夫(Chebjyshe)近似,它是频率响应指定区域内的最大误差。
(3)巴特沃思(Butterworth)近似,它是基于泰勒级数近似的期望响应近似。
大多数的有源滤波器设计算法都是以这3种近似法的一种和Parks—McCllan(最优)算法。
频率采用快速,简单,但其对整体频率响应的控制最弱。
傅立叶设计的频率响应中存在不合乎要求的震荡或过冲,可以使用窗口函数控制这些效应。
加窗方法的重要优点在于其简单性,其主要缺点是缺少对通带和阻带纹波控制的灵活性。
Parks-McCllan算法生成一个线性相位FIR滤波器,并使切比雪夫误差最小,但是如果不利用计算软件,其设计非常慢[6]。
2.2数字滤波器设计的基本步骤
2.2.1指标
在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标主要以两种方式给出。
第一种是绝对指标。
它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。
第二种指标是相对指标。
它以分贝值的形式给出要求。
在工程实际中,这种指标最受欢迎。
对于相位响应指标形式,通常希望系统在通频带中有线性相位。
运用线性相位响应指标进行滤波器设计具有如下优点[7]:
(1)只包含实数算法,不涉及复数运算;
(2)不存在延迟失真,只有固定数量的延迟;
(3)长度为N的滤波器(阶数为N-1),计算量为N/2数量级。
因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。
2.2.2逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常采用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
2.2.3性能分析和计算机仿真
上两步的结果是得到以差分方程或系统函数或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
一些FIR滤波器的设计方法可能比较简单,如傅立叶技术。
但是,不存在对于所有滤波器特性都是最优的单一方法。
滤波器系数可以通过一些合理的公式来生成。
但是,采用最优方法来获得最优滤波器需要大量的计算。
此外,在定点DSP处理器实现实时滤波器的主要问题就是有限精度和动态范围。
分析有限长效应的理论过于复杂,不适与手工计算,所以通常依靠计算机软件来设计数字滤波器[7]。
2.3本章小结
本章主要讨论了数字滤波器的设计准则,和设计数字滤波器的基本步骤。
设计准则有最小平方(LS)近似、切比雪夫(Chebjyshe)近似、巴特沃思(Butterworth)近似,这三种方法各有优缺点,在工程实现时由于现在有了高效的滤波器设计软件包(如MATLAB)可供利用,所以Parks-McCllan算法被广泛应用于大多数应用中。
设计一个数字滤波器时有一些基本的步骤,首先要按照实际需要,确定滤波器的性能指标,寻找一个满足预定性能要求的离散线性非时变系统,然后通过模拟,验证所设计的系统是否符合给定的性能指标。
第三章滤波器的选择
上一章我们解决了两个问题,那就是数字滤波器的设计准则及基本步骤。
滤波器包括模拟滤波器和数字滤波器。
但在许多信号处理应用中,使用数字滤波器代替模拟滤波器是有利的。
数字滤波器不仅具有高可靠性、高精度,而且它是用可编程的处理器实现的,因而容易改变滤波器的参数。
在应用环境改变时,这个特性方便设计工程师升级或修改已有的滤波器特性。
并且数字滤波器容易实现不同的幅度和相位频率特性指标,克服与模拟滤波器器件相关的电压漂移、温度漂移和噪声问题,因此这里选择使用数字滤波器。
而数字滤波器的设计又分为FIR(有限长单位冲激响应)滤波器和IIR(无限长单位冲激响应)滤波器。
在这一章中,就专门讨论滤波器的选择问题及FIR滤波器的定义和FIR的几种基本结构。
3.1FIR与IIR滤波器的比较
从性能上说,IIR滤波器可用较低的阶数获得高的选择性,所用的存储单元少,计算量小,效率高。
但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
FIR滤波器要达到高的选择性,必须用较高的阶数。
对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5~10倍,成本较高,信号延时也较大。
如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样要大大增加滤波器的阶数和复杂性。
而FIR滤波器却可以得到严格的线性相位[1]。
从结构上看,IIR滤波器必须采用递归结构来配置极点,并保证极点位置在单位圆内。
由于有限字长效应,运算过程中将对系数进行舍入处理,引起极点的偏移。
这种情况有时会造成稳定性问题,甚至产生寄生振荡。
相反,FIR滤波器只采用非递归结构,不论是在理论上还是在实际的有限精度运算中都不存在稳定性问题,因此造成的频率特性误差也较小。
此外FIR滤波器可以采用快速傅立叶变换算法,在相同阶数的条件下,运算速度可以快的多[1]。
另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有分段常数特性的滤波器,如低通、高通、带通及带阻等,往往脱离不了模拟滤波器的格局。
而FIR滤波器则要灵活的多,尤其是他易于适应某些特殊应用,如构成数字微分器或西尔波特变换器等,因而有更大的适应性和广阔的应用领域。
3.2FIR滤波器的定义
根据上面的比较,在这次设计中我们选择的是FIR数字滤波器,所以我们只简单介绍FIR滤波器的结构。
FIR网络结构特点是没有反馈支路,即没有环路,其单位脉冲响应是有限长的[8]。
设单位脉冲响应h(n)长度为N,其系统函数H(z)和差分方程分别为
(3-1)
(3-2)
其单位脉冲响应h(n)是有限长的,按照式(3-1)的Z反变换,h(n)表示为
滤波器的阶数N-1。
它的长度(等于系数的个数)为N。
FIR滤波器总是稳定的,同IIR结构相比而言,相对简单一些。
而且,FIR滤波器可设计成具有线性相位,这是某些应用所希望的。
3.3FIR滤波器的结构
3.3.1直接型
设N=5(即四阶FIR滤波器),按照H(Z)或者差分方程式画出的直接结
构图如图3-1所示,它可以用抽头延迟线实现[3]。
则可以写出:
(3-4)
根据此信号流图可以直接写出方程式(3-4),而且不必写出联立方程了。
3.3.2级联型
将H(Z)进行因式分解,并将共轭成对的零点放在一起,形成一个系数对称为实数的二阶形式。
这样级联型网络结构是由一阶或二阶实系数因式级联构成的,其中每一个因式都可以用直接型实现。
设FIR网络系统函数H(Z)如式(3-5),要求画出H(Z)的直接型和级联型结构。
(3-5)
将H(Z)进行因式分解,得到:
(3-6)
其级联型结构和直接型结构如图3-2所示。
级联型结构每个一阶因式控制一个零点,每个二阶因式控制一对共轭零点,因此调整零点位置比直接型方便,但H(Z)中的系数比直接型多,因而需要的乘法器多。
在上例中直接型需要四个乘法器,而级联型则需要五个乘法器。
分解的因式越多,需要的乘法器也越多。
当H(Z)的阶次高于三阶时,不易分解,需要用Matlab协助。
3.3.3线性相位形式
一般的,理想的低通滤波器具有线性相位,如(3-7)式所示。
(3-7)
其中β=0或±π/2,τ为时延的拍数。
要得到线性相位,实际滤波器的脉冲响应序列应当具有对称性。
利用这种对称性可以简化滤波器的结构。
线性相位结构在本质上仍然是直接形式,只是缩减了乘法计算量。
因此,传递函数多项式的组成形式上,线性相位结构仍等于直接形式。
3.4本章小结
经过对FIR和IIR的比较得知:
FIR滤波器可以得到严格的线性相位;FIR滤波器只采用非递归结构,有限精度的计算不会产生震荡;FIR滤波器可以采用FFT算法,在相同阶数下,运算速度可以快的多;IIR滤波器可以借助于模拟滤波器的成果;而设计FIR需要借助计算机辅助设计;FIR易于适用某些特殊应用。
这里,选择的是FIR滤波器。
FIR是没有反馈支路,即没有环路,其单位脉冲响应是有限长的。
FIR的结构有直接型、接连型、转置型和线形相位型等结果,在实际中要根据不同的要求来选择不同的结构。
第四章FIR滤波器的Matlab工具箱实现
本章介绍了设计滤波器的Matlab工具箱SPTool和FDATool,这两种数字信号处理工具箱都是一种图形用户界面,能够方便快捷的让我们设计自己的数字滤波器。
这两种工具箱都能查看所设计滤波器的幅度响应、相位响应、群延迟、零点极点图、冲激响应和阶跃响应。
4.1MatlabSPTool工具箱的FIR滤波器设计
4.1.1SPTool工具箱简介
SPTool是一个图形环境,提供了一种用于信号查看、滤波器设计和频谱分析的多图形环境。
它为信号处理工具箱中的很多函数提供了易于使用的界面,只需要操纵鼠标就可以观察、分析和打印数字信号,分析、实现和设计数字滤波器,以及频谱分析等[6]。
4.1.2用SPTool工具箱设计FIR滤波器
启动Matlab后在命令窗口输入SPTool回车就可以打开SPTool的主窗口。
如图4–1所示,由SPTool的主窗口可以看出,SPTool有3个列表框:
Signals列表框,Filters列表框和Spectra列表框,它们对应着SPTool工具中的4个功能模块[6]:
(1)信号浏览器;
(2)滤波器设计器;
(3)滤波器观察器;
(4)谱观察器;
在用SPTool进行信号处理时,必须先载入数据或先设计好滤波器。
按照不同的数据类型,数据载入可以分为信号数据载入、滤波器数据载入以及功率谱数据载入。
首先在Matlab工作空间创建信号数据。
这里以低通为例,创建信号数据时的Gen_Signal.m文件如下[9][10]:
fs=1000;
t=0:
1/fs:
1;
x=sin(2*pi*5*t);
xn=x+rand(size(t));
[B,A]=butter(20,0.6);
plot(t,xn)
可以利用File菜单中的Import选项将其他信号、滤波器或频谱由Matlab工作区中导入到SPTool工作区内。
如图4-2所示:
图4-2导入信号xn
图4-3信号sig1
已经从工作区中选择数据xn导入到Signals列中,所导入的数据命名为sig1。
这时单击OK按钮,将以此信号sig1更新原来的SPTool窗口。
选择Signals列中信号的名称,并单击列表下面的View按钮,就可以查看信号了。
如图4-3给出了受干扰的正弦波sig1。
SignalsBrowser窗口允许查看、测试和分析时域信号的特定区域。
它包括有水平和垂直标记、带有轨迹和范围的标记,并显示信号的波峰和波谷,用于测试和对比。
接下来的任务是设计一个FIR低通滤波器去滤除高频噪声分量。
将滤波器导入到Matlab工作区中最简单的方法是单击File|Import,并导入分子B和分母A系数,如图4-4所示。
并单击View来查看所导入滤波器的特性。
FilterViewer窗口允许用户查看所设计滤波器的特性,包括滤波器的幅度响应、相位响应、群延迟、零点极点图、冲激响应和阶跃响应。
SPTool工具箱中还可以根据自己定义的规格设计FIR和IIR滤波器,可以通过单击SPTool中Filters列之下的New按钮来完成这一操作。
这里选择SPTool/Filters中的Edit,对输入信号进行滤波设计,将出现如图4-5所示设计的FilterDesigner窗口,这里也允许自己去选择一个滤波器设计算法、滤波器类型和频率规格。
最后通过单击SPTool窗口中的Apply按钮,可以选择所设计的滤波器或所导入的滤波器LSLp,并将其应用至输入信号sig3。
如下图4-6所示:
图4-6信号sig3
将出现一个新的窗口,他允许我们选择滤波器的结构,并指定输出信号的名称为sig3。
由SPTool窗口中选择sig1和sig3,并单击Signal列下面的View按钮,可以查看输入信号(见图4-11)和滤波后输出信号的时域图。
如图4-7(a)、(b)所示
(a)滤波前信号(b)滤波后的信号
图4-7
从滤波前后波形对比,我们可以看出,高频分量被滤除掉了。
4.2FIR滤波器的MatlabFDATool工具箱的简介
Matlab中包括一组用于设计、分析和实现FIR滤波器的函数。
利用FDATool来为实际应用设计、分析和量化FIR滤波器,FDATool中整合了滤波器设计工具箱和信号处理工具箱。
这一强大的工具将传统的命令行滤波器设计功能集成在一个图形窗口环境中。
4.2.1滤波器设计与FDATool工具箱简介
在Matlab命令窗口中键入FDATool启动FDATool。
FDATool打开默认设计模式,如图4-8所示。
图4-8FDATool窗口
FDATool包含一个交互式GUI,它允许使用者指定以下滤波器设计参数[6]:
(1)滤波器类型可以为低通、高通、带通、带阻、多频器、微分器、Hibert转换器、任意幅度、任意相位、升余弦。
(2)滤波器设计方法可以是用于FIR滤波器的等纹波、最小平方和加窗法。
(3)滤波器阶数可由使用者指定,也可以是由滤波器设计方法确定的最小阶数。
(4)窗口技术要求仅可用于采用傅立叶方法的FIR设计。
其中共有16种窗口可供选择。
(5)频率设计要求可以是采样频率(fs)、通带截止频率或阻带截止频率。
(6)幅度技术要求可以是通带纹波和阻带纹波,单位可以为线性单位或dB.
4.2.2有限长单位冲激响应滤波器的指标
这里以一个具体例子为例利用FDATool设计FIR滤波器的过程。
滤波器的技术要求给出如下:
(1)应使用等纹波设计方法以最低阶数设计一个带通FIR滤波器。
(2)以Hz为单位的频率技术要求为Fstop1=800Hz,Fstop2=1500Hz,Fpass1=1000Hz,Fpass2=1300Hz,采样频率Fs=8000Hz。
(3)低阻与高阻带纹波的幅度技术要求分别为50dB(As1)和60dB(As2)。
通带纹波限制为1dB(Ap)。
4.3MatlabFDATool工具箱的FIR滤波器设计
有了带通滤波器的技术要求后,就可以进行Matlab软件设计了。
首先打开MATLAB进入命令窗口,在命令窗口中敲入“FDATool”命令,然后回车,就进入了FDATool的默认设计模式如上图4-7所示。
在FDATool的默认设计模式中有“ResponseType”,可以从中选择“Lowpass”,“Bandpass”,“Highpass”等滤波器类型,这里以“Bandpass”为例。
把技术指标填入相应的筐中,再点击“DesignFilter”,设计的滤波器就如图4-9Bandpass所示。
完成滤波器的设计之后,可以分析滤波器的特性。
如图4-8所示,可以通过选择Analysis菜单中所列的方法或单击工具栏按钮来访问分析方法。
从Analysis菜单中选择MagnitudeResponse,在右上窗口中显示幅度响应曲线,如图4-10所示,还可以选择PhaseResponse如图4-11所示:
图4-9Bandpass
FDATool还提供了给出滤波器特性的附加显示。
这些曲线包括相位响应、群延迟、冲激响应、阶跃响应、极零图和滤波器系数。
FIR滤波器的冲激响应显示所设计滤波器的系数。
极零图显示极点和零点的位置。
例如,相位响应和冲激响应分别显示于图4-11和图4-12中。
相位响应显示的滤波器在通带内具有线性相位,这是FIR滤波器的一个重要特性。
获得对称系数即可获得线性相位滤波器,如冲激响应中所示(图4-12)
图4-12ImpulseResponse
已经利用FDATool根据给定技术要求设计了一个FIR滤波器。
滤波器系数以双精度浮点格式表示,需要64位字长。
需要将这些系数量化为定点数(14位或32位),以便在定点DSP处理器上实现。
如图4-13所示:
图4-13量化窗口
在Analysis菜单中选择FilterCoefficents选项可以查看量化系数。
在图
4-14FilterCoefficients中可以显示以格式Q.16格式表示的量化系数。
可以在列表的最左列显示符号+、-和0。
符号+表示量化系数向+∞溢出,符号-表示量化系数向-∞溢出,符号0标志着系数已经被量化为零[6]。
系数量化后,在FilterDesign&AnalysisTool界面下,单击菜单中的Targets的下拉菜单中的GenerateCHeader,如图4-15所示,以此可以完成导出过程。
滤波器系数存储在长度为BL的数组B中。
然后进入GenerateCHeader界面,选择Exportas为signed16-bitinteger,然后单击按纽Generate,将所得到的文件进行保存,在该文件中就可以得到一组16进制有符号数据,这组数据就是后面DSP实现中编程所要用到的滤波器参数。
所生成的滤波系数如下(68阶):
.word-93,21,130,194,104,-117,-299,-257,15
.word305,360,136,-154,-251,-127,-3,-76,-232
.word-131,369,895,783,-223,-1490,-1843,-621,1498
.word2813,1988,-635,-3078,-3274,-869,2339,3802,2339
.word-869,-3274,-3078,-635,1988,2813,1498,-621,-1843
.word-1490,-223,783,895,369,-131,-232,-76,-3
.word-127,-251,-154,136,360,305,15,-257,-299
.word-117,104,194,130,21,-93
从这组滤波器数据我们可以看出,这是一组对称的数据.
4.4本章小结
SPTool和FDATool工具箱都是一种图形用户界面,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字滤波器
![提示](https://static.bdocx.com/images/bang_tan.gif)