基于MATLAB的FIR滤波器的实现

更新时间:2024-01-18 03:28:02 阅读量: 教育文库 文档下载

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

目 录

引言 ............................................................................. 2 1 数字滤波器的分析 ............................................................... 3

1.1数字滤波器 ................................................................ 3 1.2数字滤波器的应用及现状 .................................................... 4 2 FIR数字滤波器的分析 ........................................................... 4

2.1 FIR数字滤波器 ............................................................ 4 2.2 FIR数字滤波器的设计 ...................................................... 6

2.2.1利用窗函数法设计FIR数字滤波器 ...................................... 6 2.2.2窗函数法设计线性相位FIR数字滤波器的一般步骤 ........................ 9 2.2.3基于MATLAB的窗函数法直接设计法 .................................... 15 2.3 FDATool界面设计 ......................................................... 17 3 FIR数字滤波器Simulink实现 ................................................... 20 4 结论 .......................................................................... 29 致谢 ............................................................................ 29 参考文献 ........................................................................ 30

1

基于MATLAB的FIR滤波器的实现

摘 要:MATLAB因其强大的数据处理功能被广泛应用于工程计算,其丰富的工具箱为工程计算提供了便利,利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器,设计简单方便。本文分别以FIR低通、高通、带通、带阻数字滤波器为研究对象,基于MATLAB对低通、高通、带通、带阻FIR数字滤波器进行设计实现与仿真,实现了窗函数法的一般编程、窗函数法的直接设计法以及FDATool三种方法设计FIR数字滤波器,并对通过上述三种方法分别设计的FIR数字滤波器进行分析,然后介绍了FIR数字滤波器在MATLAB信号处理工具箱中的Simulink仿真。

关键字:FIR滤波器 窗函数法 MATLAB FDATool Simulink

引言

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

FIR数字滤波器具有严格的线性相位,同时可以具有任意的幅度特性,并且FIR数字滤波器的单位脉冲响应是有限长的,因而滤波器一定是稳定的。对于FIR数字滤波器,只要经过一定的延时,任何非因果的有限长序列都变成因果的有限长序列,因而总能用因果系统来实现。最后,FIR数字滤波器由于单位脉冲响应是有限长的,因而可以用FFT算法来实现过滤信号,可以大大提高运算效率。因此,FIR数字滤波器在语音处理、图像处理以及数据传输这一类要求滤波器具有严格线性相位、任意幅度的领域具有很广泛的应用[1]。

MATLAB是由美国MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体。在MATLAB内部配备了涉及到自动控制、信号处理和计算机仿真等种类繁多的工具箱,所以MATLAB的应用非常广泛,它可涉足于数值分析、控制、信号分析和通信等多种领域。MATLAB不仅可完成基本代数运算操作,而且还可完成矩阵函数运算,提供丰富的实用函数命令。另外,用户还可以根据自己的需要编写函数。

MATLAB的信号处理工具箱是专门应用于信号处理领域的专用工具箱,它的两个基本组成就是滤波器的设计与实现部分以及谱分析部分。工具箱提供了众多功能强大的函数,使原来繁琐的程序设计简化成函数的调用。只要以正确的指标参数调用相应的滤波器设计程序或工具箱函数,便可以得到正确的设计结果,使用非常方便[7]。

2

1 数字滤波器的分析

1.1数字滤波器 滤波器是指对输入信号进行滤波的软件或硬件。数字滤波器是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的硬件或软件。由于数字滤波信号形式与实现滤波方法与模拟滤波方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配以及可以避免模拟滤波器所无法克服的电压漂移和噪声问题。

数字滤波器的设计,其实质是数学逼近理论的应用,通过计算使物理可实现的实际滤波器频率特性逼近理想的或给定的频率特性,以达到去除干扰提取有用信号的目的。

数字滤波器从功能上分类:可分为低通滤波器、高通滤波器、带通滤波器、带阻滤波器。 从滤波器的网络结构或者从单位脉冲响应分类:可分为IIR滤波器(即无限长单位冲激响应滤波器)和FIR滤波器(即有限长单位冲激响应滤波器)。它们的函数分别为

M?H(z)?r?0Nbrz?r

akz?k1?N?1?k?1H(z)??h(n)z

?nn?0第一个公式中的H(z)称为N阶IIR滤波器函数,第二个公式中的H(z)称为N-1阶FIR滤波器函数。

IIR数字滤波器和FIR数字滤波器各有优缺点,也各有不同的应用场合。 IIR数字滤波器的特性[3]:

(1)IIR数字滤波器可以比较容易地实现系统的通带与阻带衰减特性。而在同样的性能要求条件下,IIR滤波器的阶次要比FIR滤波器低得多。因此,在要求计算速度的场合,一般选用IIR滤波器进行滤波。

(2)IIR系统不易实现线性相位性,如果对选择性和线性都有要求,IIR滤波器就必须加全能网络进行相位校正,这就增大了滤波器的节数和复杂性,增加了运算成本。所以,IIR滤波器一般只应用于对相位要求不严格的场合。

FIR数字滤波器的特性[3]:

(1)FIR滤波器具有精确的线性相位,即FIR滤波器的系数具有奇对称或偶对称的规律,经过FIR滤波器滤波后的信号只是被简单地延迟了个时间步长,也就是没有相位失真。因此,从要求计算精度的角度来看应选择FIR滤波器来进行数字滤波。同时,在结构上看,FIR滤波器采用非递归结构,因此FIR系统具有稳定性。

3

(2)由于FIR滤波器传输函数的极点位于原点,要达到相同的选择性,必须采用更高的阶数,这就提高了系统的成本,同时也降低了运算的速度。但是,由于FIR滤波器可以采用FFT,速度可以得到相应的提升。 1.2数字滤波器的应用及现状 数字滤波器精确度高、使用灵活、可靠性高,具有模拟设备所没有的许多优点,已广泛应用于各个学科技术领域,例如数字电视、语音、通信、雷达、声纳、遥感、图像、生物医学以及许多工程应用领域。随着信息时代数字时代的到来,数字滤波技术已经成为一门极其重要的学科和技术领域。以往的滤波器大多采用模拟电路技术,但是,模拟电路技术存在很多难以解决的问题,例如,模拟电路元件对温度的敏感性,等等。而采用数字技术则避免很多类似的难题,当然数字滤波器在其他方面也有很多突出的优点,所以采用数字滤波器对信号进行处理是目前的发展方向。

当今,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。

数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。因此,数字信号实际上是数字序列表示的信号,语音信号经采样和量化后,得到的数字信号是一个一维离散时间序列;而图像信号的经采样和量化后,得到的数字信号是一个二维离散空间序列。

数字滤波技术是数字信号分析、处理技术的重要分支。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输时至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数字滤波器了。数字滤波器的优劣直接决定产品的优劣[11]。

2 FIR数字滤波器的分析

2.1 FIR数字滤波器

FIR数字滤波器(即有限长单位冲激响应滤波器)是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR数字滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。滤波器设计是根据给定滤波器的频率特性,求得满足该特性的传输函数。

4

FIR数字滤波器有以下特点:

(1)系统的单位冲激响应h(n)在有限个n值处不为零; (2)系统函数H(z)在

z?0处收敛,极点全部在z = 0处(因果系统);

(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。

设FIR滤波器的单位冲激响应h(n)为一个N点序列,0?数为

H(z)=

N?1n?N?1,则滤波器的系统函

?h(n)zn?0?n

(2-1)

就是说,它有N—1阶极点在z = 0处,有N—1个零点位于有限z平面的任何位置。

优点:(1)只要对h(n)附加一定的条件就很容易获得严格的线性相位,避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要;(2)可得到多带幅频特性;(3)极点全部在原点,始终满足稳定条件,所以FIR数字滤波器永远稳定,无稳定性问题;(4)任何一个非因果的有限长序列,总可以通过一定的延时,转变为因果序列,所以因果性总是满足;(5)无反馈运算,运算误差小;(6)FIR数字滤波器由于单位脉冲响应是有限长的,因而可以用快速傅里叶变换(FFT)算法来实现过滤信号,因而可以大大提高运算效率。

缺点:(1)因为无极点,要获得好的过渡带特性,需以较高的阶数为代价;(2)无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设计程序完成。

FIR数字滤波器种类一般分为[14]: (1)数字集成电路FIR滤波器

这种FIR数字滤波器是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,使其系统函数H(z)具有指定的频率特性。

(2)DSP芯片FIR滤波器

这种FIR数字滤波器是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。

(3)可编程FIR滤波器

这种FIR数字滤波器是使用可编程逻辑器件,FPGA/CPLD。FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。

5

2.2 FIR数字滤波器的设计

FIR滤波器设计的任务是选择有限长度的h(n),使传输函数H(ejw)满足一定的幅度特性和线性相位要求。由于FIR滤波器很容易实现严格的线性相位,所以FIR数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。

设计过程一般包括以下三个基本问题[7]: (1)根据实际要求确定数字滤波器性能指标;

(2)用一个因果稳定的系统函数去逼近这个理想性能指标; (3)用一个有限精度的运算去实现这个传输函数。

设计方法一般分为窗函数法、频率采样法、等波纹逼近法,本文主要以窗函数法举例。 2.2.1利用窗函数法设计FIR数字滤波器

设计FIR数字滤波器的最简单的方法是窗函数法,通常也称之为傅立叶级数法。这种方法一般是先给定所要求的理想滤波器的频率响应Hd(ejw),要求设计一个FIR数字滤波器频率响应H(ejw)=

N?1?h(n)en?0?jwn去逼近理想的频率响应Hd(ejw)。然而,窗函数法设计FIR数字滤波器是

在时域中进行的,因此必须首先由理想的频率响应Hd(ejw)的傅里叶反变换推导出对应的单位脉冲响应hd(n)

hd(n)=

12?????Hd(ejw)ejwndw

(2-2)

再设计一个FIR数字滤波器的单位取样响应h(n)去逼近hd(n)。

由于Hd(ejw)是矩形频率特性,故hd(n)一定是无限长的序列,且是非因果的。而要设计的是FIR数字滤波器,其h(n)必定是有限长的,所以要用有限长的h(n)来逼近无限长的hd(n),最简单且有效的方法就是截断hd(n)。

设计过程如下:

Hd(e) ????hd(n)????h(n)????H(e)

j?IDTFFT*w(n)DTFTj?加窗的作用是通过把理想滤波器的无限长脉冲响应hd(n)乘以窗函数w(n)来产生一个被截断的脉冲响应,即h(n)?hd(n)w(n)并且对频率响应进行平滑[15]。

窗函数主要用来减少序列因截断而产生的Gibbs效应。但当这个窗函数为矩形时,得到的FIR滤波器幅频响应会有明显的Gibbs效应,并且任意增加窗函数的长度(即FIR滤波器的抽头数)Gibbs效应也不能得到改善。为了克服这种现象,窗函数应该使设计的滤波器:

(1)频率特性的主瓣宽度应尽量窄,以获取较陡的过渡带;

(2)尽量减少频率特性的最大旁瓣的相对幅度。也就是能量尽量集中于主瓣,增大阻带的衰减。

6

但这两项要求是不能同时满足的。当选用主瓣宽度较窄时,虽然得到较陡的过渡带,但是通带和阻带的波动明显增加;当选用最小的旁瓣幅度时,虽然能得到平坦的幅度响应和较小的阻带波纹,但过渡带加宽,即主瓣会加宽。因此,实际所选用的窗函数往往是它们的折中。在保证主瓣宽度达到一定要求的前提下,适当的牺牲主瓣宽度以换取相对旁瓣的抑制[6]。

设计FIR数字滤波器常用的窗函数有: 1.矩形窗(Rectangle window)

w(n)?RN0?n?N?1?1,???0,其他

(2-3)

其频率响应为

WR(ejw)?WR(w)e?j(N?1)w2

(2-4) (2-5)

WR(w)?WR(ejwsin(wN/2)sin(w/2)

)主瓣宽度为4?/N。

2.三角形窗(Bartlett window)

N?1?2n,0?n???N?12w(n)??N?1?2-2n,?n?N?1?N?12?(2-6)

其频率响应为

jwW(e)?2N?1sin[({N?1)]wN?1?j()w2sin(Nw/4)2?j(2)w242? }e()esin(w/2)Nsin(w/2)N?1(2-7)

近似结果在N>>1时成立。此时,主瓣宽度为8?瓣却小很多。

3.汉宁窗(Hanning window) 汉宁窗又称升余弦窗。

w(n)?sin(2/N,比矩形窗主瓣宽度增加一倍,但旁

?nN?1)RN(n)?12[1?cos(2?nN?1)]RN(n)

(2-8)

其频率响应为

W(ejw)?{0.5WR(w)?0.25[WR(w?2?N?1)?WR(w?2?N?1)]}e?j(N?12)w?W(w)e?j(N?12)w

(2-9)

7

当N>>1时,N-1?N,所以,窗函数的幅度函数为

W(w)?0.5WR(w)?0.25[WR(w?2?N)?WR(w?2?N)] (2-10)

这三部分之和,使旁瓣互相抵消,能量更集中在主瓣。但是代价是主瓣宽度比矩形窗的主瓣宽度增加一倍,即为8?/N。

4.海明窗(Hamming window) 海明窗又称改进的升余弦窗。

把升余弦窗加以改进,可以得到旁瓣更小的效果,形式为

w(n)?[0.54?0.46cos(2?nN?1)]RN(n)

(2-11)

其频率响应为

W(w)?0.54WR(w)?0.23[WR(w??0.54WR(w)?0.23[WR(w?2?N2?N?1)?WR(w?2?N)]2?N?1)] (2-12)

)?WR(w?与汉宁窗相比,主瓣宽度相同,为8?量集中在窗谱的主瓣内。

5.布莱克曼窗(Blackman window) 布莱克曼窗又称二阶升余弦窗。

/N,但旁瓣又进一步压低,结果可将99.963%的能

为了进一步抑制旁瓣,对升余弦窗再加上一个二次谐波的余弦分量,变成布莱克曼窗,故又称二阶升余弦窗。

w(n)?[0.42?0.5cos(2?nN?1)?0.08cos(4?nN?1)]RN(n)

(2-13)

其频率响应为

W(w)?0.42WR(w)?0.25[WR(w??0.04[WR(w?4?N?1)?WR(w?2?N?1)]/N)?WR(w?2?N?1)]4?N?1

(2-14)

此时主瓣宽度为矩形窗谱主瓣宽度的3倍,即为12?6.凯塞窗(Kaiser window)

以上几种窗函数是各以一定主瓣加宽为代价,来换取某种程度的旁瓣抑制,而凯塞窗则是全面地反映主瓣与旁瓣衰竭之间的交换关系,可以在它们两者之间自由的选择它们的比重。

凯塞窗是一种适应性较强的窗,其窗函数的表达式为

w(n)?I0(?1?[1?2n/(N?1)])I0(?)8

2,0?n?N-1

(2-15)

式中,I0(x)是第一类变形零阶贝塞尔函数,?是一个可自由选择的参数,它可以同时调整主瓣宽度与旁瓣电平,?越大,则w(n)窗越窄,而频谱的旁瓣越小,但主瓣宽度也相应增加。因而改变?值就可对主瓣宽度与旁瓣衰减进行选择。一般选择4

窗函数法的设计步骤归纳如下:

(1)给定希望逼近的频率响应函数Hd(ejw); (2)根据式(2-2)求单位脉冲响应hd(n)

hd(n)=

12???H??d(ejw)ejwndw

如果Hd(ejw)很复杂或不能直接计算积分,则必须用求和代替积分,以便在计算机上计算,也就是要计算离散傅里叶反函数。

(3)由过渡带宽及阻带最小衰减的要求,可选定窗形状,并估计窗口长度。因过渡带?w近似与窗口长度成反比,N的窗函数。

(4)计算所设计的FIR数字滤波器的单位脉冲响应。

h(n)?hd(n)w(n)?A/?w,A决定于窗口形式,A参数选择参考表1。按照过渡带及

阻带衰减情况,选择窗函数形式。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄

,0?n?N?1

(5)由h(n)求FIR数字滤波器的系统函数H(z)

N?1H(z)??n?0h(n)z?n

表1 6种窗函数基本参数的比较

过度带宽?w 8?/N 8?/N 8?/N 12?/N 10?/N

4?/N

阻带最小衰减/dB

-21 -25 -44 -53 -74 -80

窗函数

矩形窗 三角形窗 汉宁窗 海明窗 布莱克曼窗

凯塞窗 (β=7.865)

旁瓣峰值幅度/dB

-13 -25 -31 -41 -57 -57

根据窗函数法设计一个FIR数字低通滤波器,技术指标如下:

9

通带截止频率ωp=0.2πrad,通带允许波动Rp=0.25dB; 阻带截止频率ωs=0.3πrad,阻带衰减Rs=50dB。

思路:查表1可知,海明窗、布莱克曼窗以及凯塞窗均可提供大于50dB的衰减,但是海明窗具有较小的过渡带从而具有较小的长度N,故采用海明窗设计该低通滤波器

基于MATLAB对FIR数字低通滤波器设计实现的编程如下: clc; clear;

Wp=0.2*pi;Rp=0.25;Ws=0.3*pi;Rs=50; wt=Ws-Wp;%计算过渡带宽

N=8*pi/wt;%按海明窗计算滤波器的长度 n=[0:1:N-1];

Wc=(Wp+Ws)/2;%计算3dB通带截止频率 hd=ideal_lp(Wc,N); w_han=(hamming(N))'; h=hd.*w_han;

[db,mag,pha,grd,w]=freqz_m(h,1); subplot(1,1,1); subplot(2,2,1);

plot(w/pi,db);title('幅频特性图'); xlabel('w/pi'); ylabel('dB');

axis([0, 1, -150, 50]); subplot(2,2,2);

plot(w/pi,pha);title('相频特性图'); xlabel('w/pi'); ylabel('pha'); subplot(2,2,3);

stem(n,h,'.');title('实际脉冲响应'); xlabel('n');ylabel('h(n)'); subplot(2,2,4);

stem(n,w_han,'.');title('海明窗'); xlabel('n');ylabel('海明窗');

基于MATLAB对FIR数字低通滤波器的仿真结果如下图2.1所示:

10

如图2.1所示,图中依次是该FIR数字低通滤波器的幅频特性图、相频特性图、实际脉冲响应图以及海明窗图。由幅频特性图可知,所设计FIR数字低通滤波器的通带截止频率为0.2*pi,阻带截止频率为0.3*pi,且阻带衰减大于50dB,故满足技术指标要求;由相频特性图可知,所设计FIR数字低通滤波器具有严格的线性相位;实际脉冲响应图表示的是理想单位脉冲响应hd(n)经过海明窗的截断后所得到的实际单位脉冲响应h(n);海明窗图表示的是海明窗窗函数的窗谱,可见主瓣较宽,过渡带较缓,但能量主要集中在窗谱的主瓣内。

图2.1 FIR数字低通滤波器的仿真结果图

根据窗函数法设计一个FIR数字高通滤波器,性能指标如下: 阻带截止频率ωs=0.2π,通带截止频率ωp=0.3π; 最大通带波动Rp=0.25dB,最小阻带衰减Rs=70dB。

思路:查表1可知,凯塞窗以及布莱克曼窗都能提供70dB的最小阻带衰减,但是凯塞窗具有较小的过渡带从而具有较小的长度N,故采用凯塞窗设计该高通滤波器。

基于MATLAB对FIR数字高通滤波器设计实现的编程如下: clc; clear; Rs=70; Ws=0.2*pi; Wp=0.3*pi;

11

beta=7.865;

wt=Wp-Ws;%计算过渡带宽

M=10*pi/wt;%按凯塞窗计算滤波器长度 n=[0:1:M-1];

w_kai=(kaiser(M,beta))';%求凯塞窗函数 Wc=(Ws+Wp)/2;

hd=ideal_lp(pi,M)-ideal_lp(Wc,M);%求理想脉冲响应 h=hd.*w_kai;%设计的脉冲响应为理想脉冲响应与窗函数乘积 [db,mag,pha,grd,W]=freqz_m(h,[1]); subplot(1,1,1); subplot(2,2,1); 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(W/pi,db); title('幅度响应/dB'); axis([0 1 -100 10]);grid; xlabel('以π为单位的频率'); ylabel('分贝数/dB');

基于MATLAB对FIR数字高通滤波器的仿真结果如下图2.2所示:

如图2.2标注所示,图中依次是该FIR数字高通滤波器的理想脉冲响应图、凯塞窗图、实际脉冲响应图以及幅度响应图。理想脉冲响应图表示的是满足该技术指标的理想FIR数字高通

12

滤波器的理想单位脉冲响应hd(n);凯塞窗图表示的是凯塞窗窗函数的窗谱,结合图2.1可见,凯塞窗与海明窗相比,主瓣较窄,过渡带较陡,但能量相对不太集中在窗谱的主瓣内,由上凯塞窗原理可知,在凯塞窗中,主瓣与旁瓣衰减可自由变化比重;实际脉冲响应图,表示的是理想单位脉冲响应hd(n)经过凯塞窗的截断后所得到的实际单位脉冲响应h(n);由幅频特性图可见,所设计FIR数字高通滤波器的阻带截止频率为0.2*pi,通带截止频率为0.3*pi,且阻带衰减大于70dB,满足技术指标要求。

图2.2 FIR数字高通滤波器的仿真结果图

根据窗函数法设计一个FIR数字带通滤波器,性能指标如下: 低阻带:ws1=0.2π,Rs=60dB;低通带:wp1=0.35π,Rp=1dB 高通带:wp2=0.65π,Rp=1dB;高阻带:ws2=0.8π,Rs=60dB

思路:查表1可知,凯塞窗以及布莱克曼窗都能提供60dB的最小阻带衰减,但是凯塞窗具有较小的过渡带从而具有较小的长度N,故采用凯塞窗设计该带通滤波器。

基于MATLAB对FIR数字带通滤波器设计实现的编程如下: clc; clear;

wp1=0.35*pi;wp2=0.65*pi; ws1=0.2*pi;ws2=0.8*pi; Rp=1;Rs=60;

13

beta=7.865;

delta_w=min((wp1-ws1),(ws2-wp2)); M=10*pi/wt; n=[0:1:M-1];

w_kai=(kaiser(M,beta))'; wc1=(wp1+ws1)/2;wc2=(wp2+ws2)/2; hd=ideal_lp(wc2,M)-ideal_lp(wc1,M); h=hd.*w_kai;

[db,mag,pha,grd,w]=freqz_m(h,[1]); subplot(1,1,1); subplot(2,2,1);

plot(w/pi,db);title('幅频特性图');

xlabel('w/pi');ylabel('dB');axis([0, 1, -150, 50]); subplot(2,2,2);

plot(w/pi,pha);title('相频特性图'); xlabel('w/pi');ylabel('pha'); subplot(2,2,3);

stem(n,h,'.');title('实际脉冲响应'); xlabel('n');ylabel('h(n)'); subplot(2,2,4);

stem(n,w_kai,'.');title('凯塞窗'); xlabel('n');ylabel('凯塞窗');

基于MATLAB对FIR数字带通滤波器的仿真结果如下图2.3所示:

14

图2.3 FIR数字带通滤波器的仿真结果图

如图2.3标注所示,图中依次是该FIR数字带通滤波器的幅频特性图、相频特性图、实际脉冲响应图以及凯塞窗图。由幅频特性图可知,所设计FIR数字带通滤波器的通带截止频率分别为0.35*pi、0.65*pi,阻带截止频率分别为0.2*pi、0.8*pi,且阻带衰减大于60dB,满足技术指标要求;由相频特性图可知,所设计FIR数字带通滤波器具有严格的线性相位;实际脉冲响应图表示的是理想单位脉冲响应hd(n)经过凯塞窗的截断后所得到的实际单位脉冲响应

h(n);凯塞窗图表示的是凯塞窗窗函数的窗谱,可见能量主要集中在窗谱的主瓣内。 MATLAB提供了用窗函数法直接设计线性相位FIR数字滤波器的函数,即fir1()函数,这

2.2.3基于MATLAB的窗函数法直接设计法 样就大大省去了编程而耗费的时间,格式为

hn=fir1(N,Wc,'ftype',window)

其中,返回函数hn为滤波器的单位抽样响应h(n)的N点序列值向量;window为窗函数,默认为hamming窗;Wc为理想滤波器截止频率的归一化值(对于带通、带阻滤波器为2维向量);ftype为滤波器类型,默认低通或带通,当ftype=high时为高通,ftype=stop时为带阻。

根据基于MATLAB的窗函数法直接设计法设计一个FIR数字带通滤波器,技术指标如下: 低阻带:ws1=0.2π,Rs=60dB;低通带:wp1=0.35π,Rp=1dB

15

高通带:wp2=0.65π,Rp=1dB;高阻带:ws2=0.8π,Rs=60dB 思路:分析可知,采用凯塞窗设计该带通滤波器。

基于MATLAB的窗函数法直接设计法对FIR数字带通滤波器设计实现的编程如下: clc; clear;

wp1=0.35*pi;wp2=0.65*pi; ws1=0.2*pi;ws2=0.8*pi; Rp=1;Rs=60;

delta_w=min((wp1-ws1),(ws2-wp2)); wc1=(wp1+ws1)/2;wc2=(wp2+ws2)/2; N=ceil(10*pi/delta_w); beta=0.1102*(Rs-8.7); w_kai=(kaiser(N,beta))';

hn=fir1(N-1,[wc1,wc2]/pi,kaiser(N)); [h1,w1]=freqz(hn,1); subplot(2,2,1);

plot(w1/pi,20*log10(abs(h1))); axis([0,1,-100,5]);

xlabel('w/pi');ylabel('dB'); title('幅频特性图'); subplot(2,2,2);

plot(w1/pi,180/pi*unwrap(angle(h1))); xlabel('w/pi');ylabel('pha'); title('相频特性图'); subplot(2,2,3);

n=0:N-1;stem(n,hn,'.'); axis([0,N-1,-0.5,0.5]); xlabel('n');ylabel('h(n)'); title('实际脉冲响应'); subplot(2,2,4);

stem(n,w_kai,'.');xlabel('n');ylabel('凯塞窗'); title('凯塞窗');

基于MATLAB的窗函数法直接设计法对FIR数字带通滤波器的仿真结果如下图2.4所示:

16

图2.4 FIR数字带通滤波器的仿真结果图

如图2.4标注所示,上图中依次是该FIR数字带通滤波器的幅频特性图、相频特性图、实际脉冲响应图以及凯塞窗图。由幅频特性图可知,所设计FIR数字带通滤波器的通带截止频率分别为0.35*pi、0.65*pi,阻带截止频率分别为0.2*pi、0.8*pi,并且阻带衰减大于60dB,故满足技术指标要求;由相频特性图可知,所设计FIR数字带通滤波器具有严格的线性相位;实际脉冲响应图表示的是理想单位脉冲响应hd(n)经过凯塞窗的截断后所得到的实际单位脉冲响应h(n);凯塞窗图表示的是凯塞窗窗函数的窗谱。 2.3 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滤波

17

器的Butterworth法、Chebyshev Type I法、 Chebyshev Type II法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法

[10]

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选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。

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

首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window Specifications选项中选取Hamming;指定Filter Order项中的Specify Order=97;由于采用窗函数法设计,只要给出通带下限截止频率Fc1和通带上限截止频率Fc2,选取Fc1=80Hz,Fc2=100Hz。设置完以后点击Design Filter即可得到所设计的FIR滤波器。

通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置。滤波器系数等各种特性。设计完成后将结果保存为图2.5 DAIT.fda文件。

18

图2.5 DAIT.fda文件

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

(Magnitude Response)

中按

既得滤波器的幅频响应

图2.6 滤波器幅频响应(特性区)

19

在Response)

中按既得滤波器的相频响应(Phase

图2.7 滤波器相频响应(特性区)

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

3 FIR数字滤波器Simulink实现

Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。

Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。

Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。

Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了

20

交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。构架在Simulink基础之上的其他产品扩展了Simulink多领域建模功能,也提供了用于设计、执行、验证和确认任务的相应工具。Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号参数和测试数据的定义[13]。

本文通过调用simulink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。

图3.1 FIR数字带通滤波器simulink仿真图

构造以基波信号x(t),如下:

x(t)=5*sin(100*pi*t)+2*sin(240*pi*t)+sin(2*83.3*pi*t)

通过simulink环境下的digital filter design(数字滤波器设计)模块导入图2.5中fdatool所设计的滤波器文件DAIT.fda。simulink仿真图如上图3.1:

其中应用到的模块有:

Signal Processing Sources中的Sine Wave(正弦波信号发生器); Simulink中Sources中的Scope(示波器); Signal Routing中的Mux(复路器);

Filter Designs中的Digital Filter Design(数字滤波器设计)。 各模块参数设置过程如下:

21

(1)由Sine Wave1产生5*sin(100*pi*t)的采样信号,参数设置如下图3.2所示; (2)由Sine Wave2产生2*sin(240*pi*t)的采样信号,参数设置如下图3.3所示;

图3.2 Sine Wave1图3.3 Sine Wave2参数设置

(3)由Sine Wave3产生sin(2*83.3*pi*t)的采样信号,参数设置如下图3.4所示;

22

图3.4 Sine Wave3参数设置

(4)示波器Scope、Scope1、Scope2、Scope3、Scope4的参数设置分别如下图3.5、图3.6、图3.7、图3.8、图3.9所示:

图3.5 Scope参数设置 图3.6 Scope1参数设置

23

图3.7 Scope2参数设置 图3.8 Scope3参数设置

图3.9 Scope4参数设置

24

(5)双击Digital Filter Design模块,打开图2-2-1中fdatool所设计的滤波器文件DAIT.fda,如下图3.10所示:

图3.10 Digital Filter Design模块

点击simulink工具栏如下图所示:

中的

开始仿真,仿真结果

25

图3.11 示波器Scope的波形

在图3.11中的示波器波形是正弦波信号发生器Sine Wave1产生的采样波形,采样频率为1000HZ,即5*sin(100*pi*t)

图3.12 示波器Scope1的波形

在图3.12中的示波器波形是正弦波信号发生器Sine Wave2产生的采样波形,采样频率为1000HZ,即2*sin(240*pi*t)

26

图3.13 示波器Scope2的波形

在图3.13中的示波器波形是正弦波信号发生器Sine Wave3产生的采样波形,采样频率为1000HZ,即sin(2*83.3*pi*t)

图3.14 示波器Scope3的波形

在图3.14中的示波器波形是由正弦波信号发生器Sine Wave1、Sine Wave2、Sine Wave3分别产生的采样信号经过复路器后,产生的基波信号x(t)

27

图3.15 示波器Scope4的波形

在图3.15中的示波器波形是基波信号x(t)经过2.3FDATool设计的带通滤波器后即滤波后的波形,与图3.13对比发现示波器波形基本一致。所以经过离散采样、数字滤波后分离出了83.3hz的频率分量。之所以选取上面的叠加信号x(t)作为原始信号,是由于在实际工作中是要对已经经过差分滤波的信号进一步做带通滤波,信号的各分量基本同x(t)一致,可以反映实际的情况。本例设计的滤波器已在实际工作中应用,取得了不错的效果。

28

4 结论

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

本文基于MATLAB分别采用了FIR数字滤波器最常用的窗函数法、MATLAB提供的直接设计数字滤波器的fir1()函数以及MATLAB自带的FDATool工具箱对FIR数字低通、高通、带通、带阻滤波器进行设计实现及仿真,并对以上三种方法进行分析,然后运用了MATLAB工具箱中的simulink仿真工具箱,实现了FIR数字滤波器的仿真及分析,充分体现了MATLAB在FIR数字滤波器的设计实现及仿真分析中的强大功能。

MATLAB工具箱中的FDATool工具箱只要输入技术指标要求,就可立即产生响应符合的数字滤波器,并能更详细的分析所设计的数字滤波器的性能指标,使得数字滤波器的设计及仿真更加方便及直观。FIR数字滤波器在数字处理领域有非常重要的地位,应用MATLAB语言进行FIR数字滤波器的设计仿真时,可根据设计要求随时改变参数,以使数字滤波器达到最优化。

致谢

四年的大学生活即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。在这三年多的求学生涯中师长、亲友给与了我大力支持,在这个美丽的夏季我将迈开脚步走向远方,怀念,思索,长长的问号一个个在求学的路途中被知识的狙手击碎,而人生的思考才刚刚开始。感谢对我教书育人的老师,我不是你们最出色的学生,而你们却是我最尊敬的老师。大学时代的老师治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了对待知识,走向社会的思考方式。在这里尤其要感谢樊老师,从论文题目的选定到论文写作的指导,经由您悉心的点拨,终于完成本篇毕业论文。

29

参考文献

[1]曹戈.MATLAB教程及实训[G].北京:机械工程出版社,2008.4:214-248

[2]王艳芬等.数字信号处理原理及实现[G].北京:清华大学出版社,2008.3:177-210 [3]王凤文等.数字信号处理[G].北京:北京邮电大学出版社,2005:188-210 [4]张立材等.数字信号处理[G].北京:北京邮电大学出版社,2003:216-256

[5]张德丰.MATLAB数字信号处理与应用[G].北京:清华大学出版社,2010.1:214-245 [6][美]M.H.海因斯 著,张建华等 译.数字信号处理[G].北京:科学出版社,2002:192-230 [7]董长虹等.MATLAB信号处理与应用[G].北京:国防工业出版社,2005:130-178 [8]张葛祥等.MATLAB仿真技术与应用[G].北京:清华大学出版社,2003:142-195

[9]张亚妮.基于MATLAB的数字滤波器设计[J].辽宁工程技术大学学报,2005,24(5):716-718

[10]饶志强,叶念渝.FIR和IIR数字滤波器的探讨与实现[J].计算机与数字工程,2005,33(7):143-146 [11]孙强.运用MATLAB实现数字滤波器的设计[J].电脑学习,2005,25(2):32-33 [12]聂祥飞.基于Matlab的IIR数字滤波器设计研究[J].信息技术,2002,26(12):38-40

[13]李茂,任学恒.基于Matlab/Simulink的数字滤波器的设计与仿真[J].磁性材料与器件,2007,02:

65-68

[14]张新明,沈兰荪.基于小波的同态滤波器用于图像对比度增强[J].电子学报,2001,29(4):531-533 [15]黄建明,隋燕.基于数字滤波器设计的讨论[J].南开大学学报(自然科学版),2003,26(3):15-18

Simulation of the FIR filters based on the MATLAB

Abstract:The MATLAB is widely used in engineering calculations because of its powerful data processing capabilities,its rich toolbox for engineering calculations conveniently.Using the MATLAB signal processing toolbox can design a variety of digital filters quickly,efficiently,simply and conveniently.In this paper, the FIR low-pass, high pass, band pass, band-stop digital filter is discussed as the research object.The FIR low-pass, high pass, band pass, band-stop digital filter is designed and simulated based on the MATLAB.The FIR digital filters is designed by the general programming of the window function method, direct design method of the window function method and FDATool three methods and is analysised in this paper.And this pape describes the Simulink simulation of the FIR digital filter.

Keywords:FIR filter Window function method MATLAB FDATool Simulink simulation

30

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

Top