基于matlab的数字滤波器设计
2014-04-29臧旭跃赵河明郭晨
臧旭跃 赵河明 郭晨
【摘要】数字滤波器是数字信号处理的一个重要分支,它的精确度高、使用灵活、可靠性高,具有模拟设备所没有的许多优点,采用数字滤波器对信号进行处理是目前的发展方向。数字滤波器可分为IIR和FIR两大类,本文根据模拟滤波器的设计原理,提出了基于MATLAB的数字滤波器的设计与仿真,并在MATLB环境下实现 了FIR数字滤波器的仿真,通过分析可知所设计的滤波器符合我所提出的技术指标。
【关键词】模拟滤波器; MATLAB;FIR数字滤波器
1.引言
数字FIR(Finite Impulse Response)滤波器[1]指有限脉冲响应数字滤波器,这是一种数字型信号处理领域中应用非常广泛的基础性滤波器元件,数字FIR滤波器的特点是能够在输入具有任意幅频特性的数字信号后,保证输出数字信号的相频特性任然保持严格线性。另外FIR数字滤波器具有有限长的脉冲采样响应特性,比较稳定。因此,FIR滤波器的应用要远远广于IIR滤波器,在信息传输领域、模式识别领域以及数字图像处理领域具有举足轻重的作用。
数字FIR滤波器的工作原理[2]:模拟信号首先经由A/D转换器件(逐次逼近型A/D转换器速度较快)被转换成数字信号,进入滤波器进行处理后,形成一长串数据序列,如果需要的话将该数据序列输入到外接D/A转换器,转换成模拟信号使用。
图1 FIR滤波器的工作原理
2.数字FIR滤波器的设计指标
在设计一个滤波器之前,必须首先确定一些技术指标。这些技术指标需要根据工程实际的需要来制定。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般确定为频域中幅度和相位响应。幅度指标主要以两种方式给出[3],第一种是绝对指标,它提供对幅度响应函数的要求,这些指标一般应用于FIR滤波器的设计;第二种指标是相对指标,它以分贝值的形式给出要求,在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中具有线性相位。运用相位响应指标进行滤波器设计具有如下优点:只包含实数算法,不涉及复数运算;只存在延迟失真,只有固定数量的延迟;长度为M的滤波器(阶数为M-1),它的计算量为M/2数量级。
3.数字FIR滤波器的设计思想与设计步骤
有限长单位冲激响应(FIR)数字滤波器可以实现线性相位[25],又可具有任意幅度特性。有限长FIR数字滤波器的设计方法主要是窗函数设计法。窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。用窗函数法设计FIR滤波器的基本理念是在时域上将设计出的滤波器单位脉冲响应函数尽可能接近理想滤波器单位脉冲响应函数。
设理想条件下,FIR滤波器的单位脉冲响应函数为[4];
(1)
(2)
但是一个无限长的非因果系统,而我们想要的是一个有限长的因果滤波器,于是我们使用一个窗函数来截断,即用一个合适的窗函数对做加窗处理:
(3)
只要窗函数的长度和形状选取合适,我们就可以生成合适的滤波器。
用窗函数法设计FIR滤波器的步骤[5]如下:
(1)根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1)。窗函数类型可根据最小阻带衰减独立选择,因为窗口长度N对最小阻带衰减没有影响。在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N。设待求滤波器的过渡带宽为,它与窗口长度N近似成反比。窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正。原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N。在和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数。
(2)根据待求滤波器的理想频率响应求出理想单位脉冲响应。如果给出待求滤波器的频率响应为, 在一般情况下,是不能用封闭公式表示的,需要采用数值方法表示。从采样N点,采用离散傅里叶反变换(IDFT)即可求出。
(3)计算滤波器的单位脉冲响应。它是理想单位脉冲响应和窗函数的乘积,即:
(4)
在MATLAB中用点乘命令表示为:
(5)
(4)验算技术指标是否满足要求。为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。
4.FIR滤波器程序设计
设带通FIR滤波器的频率响应为:
(6)
(1)用凯泽窗函数设计一个长度的带通滤波器,其通带最大衰减为;其阻带最小衰减为,源程序如下:
图2 设计(1)源程序
图3 设计(1)源程序
图4 设计(1)源程序
程序在MATLAB环境下的运行及结果如图5所示。
图5 设计(1)的结果图
运行上面程序的M文件,得到的结果为:线性相位斜率为5.6533;同时得到如图5.1所示的图形结果。从计算结果可知,参数刀=5.6533。从图5.1还可以看出最小阻带衰减小于60dB,因此需要增加刀使得衰减增至60dB。
(2)设计一个具有如下指标的低通FIR滤波器;;;因为要求衰减阻带,所以可以选择海明窗和布莱克曼窗,现在一海明窗为例实现。原程序如图6所示。
图6 设计(2)源程序
程序在MATLAB环境下的运行及结果如图7所示:
图7 设计(2)的结果图
图8 设计(2)的结果图
如图8所示,该函数很好地实现了所提出的技术要求。
5.结论
从本文的分析和設计可以看出,使用窗函数法进行设计的最大优势为简单实用性很强,因为其设计出的FIR滤波器的频域特性很容易满足设计要求,FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的极点多为原点,所以FIR滤波器永远是稳定的。但该方法的缺点往往在大多数设计结果里,我们所设计的滤波器的频率响应的边界频率条件往往不能严格控制。
参考文献
[1]陈后金,数字信号处理[M].北京:高等教育出版社,2004:124-177.
[2]蒋志凯.数字滤波与卡尔曼滤波[M]北京:中国科学技术出版社,1993:1-2.
[3]韩得竹,王华.MATLAB电子仿真与应用[M].国防工业出版社,2001.
[4]M.S.Lobo,L.Vandenberghe,S.Boyd,H.Lebret.Second-Order Cone Programming[J].Linear Algebraand its Applications,1998,284(1-3):193-228.
[5]L.Vandenberghe,S.Boyd.Semidefiniteprogramming[J].SIAM review,1996,38(1):49-95.