1、随着信息时代的到来,数字信号处理已经成为当今一门及其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用,在数字信号处理中,数字滤波器占有及其重要的地位,它具有精度高,可靠性好、灵活性大等特点,现代数字滤波器可以用软件和硬件两种方式来实现,软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。 MATLAB是一种面向科学和工程计算的语言,它集数值分析,矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点,MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计到达最优化,是数字滤波器设计的强有力工
2、具。本文介绍了如何利用MATLAB仿真软件系统结合窗函数法设计一个数字窗函数法关键字:数字信号处理 数字滤波器 MATLAB 重要的地位 窗函数法窗函数法1原理说明随着信息时代的到来,数字信号处理已经成为一门极其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。在数字信号处理中,数字滤波器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。现代数字滤波器可以用软件或硬件两种方式来实现。软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。MATLAB是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调
3、试手段丰富、扩充能力强等特点。MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计到达最优化,是数字滤波器设计的强有力工具。1.1 数字滤波技术数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重,故实质上是一种程序滤波。与此对应的就是模拟滤波,由于模拟滤波牵扯到的其他知识太多在此不详细介绍了,模拟滤波主要无源绿波直接用电阻、电容、电感等不外接电源的元件组成的与有源滤波如运算放大器等需要外接电源组成的,其目的是将信号中的噪音和干扰滤去或者将希望得到的频率信号滤出为我所用。数字滤波的出现克服了模拟滤波的很多缺乏,具有以下优点:A是用程序实现的,不
4、需要增加硬设备,所以可靠性高,稳定性好。B可以对频率很低的信号实现滤波,克服了模拟滤波的缺陷。C可以根据信号的不同,采用不同的滤波方法或参数,具有灵活、方便、功能强的特点。几种常用的滤波方法:1算术平均值法2中值滤波法3.滑动平均值法4.限幅滤波法5.惯性滤波法数字滤波技术通过数字滤波器实现,从实现方法上可以分为FIR数字滤波器和IIR数字滤波器,按功能可分为低通滤波器LPF、高通滤波器HPF、带通滤波器BPF和带阻滤波器BSF。本文主要对FIR滤波器加以介绍。1.2 FIR滤波器FIRFinite Impulse Response滤波器,即有限长单位冲激响应滤波器,是数字信号处理系统中最根本
5、的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反响,是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用,FIR滤波器具有以下主要优点:1.FIR滤波器具有准确的线性相位;2.FIR滤波器永远稳定;3.FIR滤波器设计方法一般是线性的;4.FIR滤波器在硬件上具有更高的运行效率;5.FIR滤波器启动传输时间只需要有限时间。FIR滤波器的主要缺点有:1.FIR滤波器为到达同样的性能要求需要比IIR滤波器高得多的阶数;2.相应的FIR滤波器的时延比同等性能的IIR滤波器高很多。FIR滤波器的硬件实现主要有数字集
6、成芯片,DSP芯片FIR滤波器,可编程FIR滤波器,后两者的实际方法主要通过MATLAB软件进行设计,其设计方法多样,形式灵活,能够满足各种要求,并且不受数字集成芯片规格的限制。FIR滤波器的设计方法主要有窗函数法、多带和过渡带、约束最小二乘法、任意相应法、升余弦法,其中最常用的是窗函数法。1.3 窗函数窗函数法是设计FIR滤波器的最主要方法之一,实际中遇到的离散时间信号总是有限长的,因此不可防止的要遇到数据截短的问题,在信号处理中,对离散序列的截短是通过序列与窗函数相乘来实现的。在信号处理中,窗函数是一种除在给定区间之外取值均为0的实函数。譬如:在给定区间内为常数而在区间外为0的窗函数被形象
7、地称为矩形窗。任何函数与窗函数之积仍为窗函数,所以相乘的结果就像透过窗口“看其他函数一样。窗函数在光谱分析、滤波器设计以及音频数据压缩等方面有广泛的应用。常用的窗函数有矩形窗、巴特利特Bartlett窗、三角窗、海明Hamming窗、汉明Hanming窗、布莱克曼Blackman窗、切比雪夫Chebyshev窗、凯泽Kaiser窗。1.4 MATLAB结合窗函数设计法原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即
8、无限长冲激响应IIR滤波器和有限长冲激响应FIR滤波器。IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的根底上进一步变换的方法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最正确逼近法等。FIR滤波器具有严格的相位特性,这对于语音信号处理和数据传输是很重要的。目前FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。因此设计FIR滤波器的
9、方法之一可以从时域出发,截取有限长的一段冲击响应作为H(z)的系数,冲击响应长度N就是系统函数H(z)的阶数。只要N足够长,截取的方法合理,总能满足频域的要求。一般这种时域设计、频域检验的方法要反复几个回合才能成功。要设计一个线性相位的FIR数字滤波器,首先要求理想频率响应。是w的周期函数,周期为,可以展开成傅氏级数: 1-1使用上述的传递函数去逼近,一个理想的频率响应的傅立叶反变换: 1-2其中是与理想频响对应的理想单位抽样响应序列。但不能用来作为设计FIR DF用的h(n),因为一般都是无限长、非因果的,物理上无法实现。为了设计出频响类似于理想频响的滤波器,可以考虑用来近似。窗函数的根本思
10、想:先选取一个理想滤波器它的单位抽样响应是非因果、无限长的,再截取或加窗它的单位抽样响应得到线性相位因果FIR滤波器。这种方法的重点是选择一个适宜的窗函数和理想滤波器。设是一个长序列,是长度为N的窗函数,用截断,得到N点序列,即 1-3在频域上那么有 1-4由此可见,窗函数不仅仅会影响原信号在时域上的波形,而且也会影响到频域内的形状。MATLAB信号工具箱主要提供了以下几种窗函数,如表1-1所示:表1-1 MATLAB窗函数窗窗 函 数矩形窗Boxcar三角窗Triang 海明窗Hamming汉宁窗Hanning布莱克曼Blackman切比雪夫窗Chebyshev凯塞窗Kaiser加矩形窗后的
11、频谱和理想频谱可得到以下结论:加窗使过渡带变宽,过渡带的带宽取决于窗谱的主瓣宽度。矩形窗情况下的过渡带宽是。N越大,过渡带越窄、越陡;过渡带两旁产生肩峰,肩峰的两侧形成起伏振荡。肩峰幅度取决于窗谱主瓣和旁瓣面积之比。矩形窗情况下是8.95,与N无关。工程上习惯用相对衰耗来描述滤波器,相对衰耗定义为: 1-5这样两个肩峰点的相对衰耗分别是0.74dB和-21dB。其中-0.0895对应的点的值定义为阻带最小衰耗。以上的分析可见,滤波器的各种重要指标都是由窗函数决定,因此改良滤波器的关键在于改良窗函数。窗函数谱的两个最重要的指标是:主瓣宽度和旁瓣峰值衰耗。旁瓣峰值衰耗定义为: 旁瓣峰值衰耗20lg
12、(第一旁瓣峰值主瓣峰值) 1-6为了改善滤波器的性能,需使窗函数谱满足:(1)主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带。(2)尽量减少最大旁瓣的相对幅度,也就是能量集中于主瓣,以减小带内、带外波动的最大幅度,增大阻带衰减。一般来说,以上两点很难同时满足。中选取主瓣宽度很窄时,旁瓣的分量势必增加,从而带内、带外的波动也增加了;中选取最小的旁瓣幅度时,降低了带内、带外的波动,但是过渡带的陡度减小了。所以实际采用的窗函数其特性往往是它们的折中,在保证主瓣宽度到达一定要求的前提下,适当牺牲主瓣宽度来换取旁瓣波动的减小。2.根本窗函数根本窗函数包括以下三类,主要有:矩形窗函数、汗明窗窗函数和布莱
13、克曼窗函数。下面就对这些窗函数展开介绍。2.1 矩形窗函数矩形窗(Rectangular Window)函数的时域形式可以表示为: (2-1) 公式2(-(1它的频域特性为 (2-2) 公式2-2Boxcar函数:生成矩形窗调用方式w = boxcar (n):输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。从功能上讲,该函数又等价于w = ones(n,1)。2.2汉宁窗升余弦窗汉宁窗Hanning函数时域形式可表示为: 2-3利用傅利叶变换的调制特性,由上式可得汉明窗的平谱函数为: 2-4 式2-8式中, (公式2-9)当N远大于1时,上式可近似表示为: 2-5 公式2-
14、10这三局部之和使旁瓣互相抵消,能量更集中在主瓣,汉明窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8/N。hanning函数:生成汉明窗调用方式:(1) w = hanning(n):输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。注意:此函数不返回是零点的窗函数的首尾两个元素。 (2) w = hanming(n,symmetric):与上面相类似。(3) w = hanming(n,periodic):此函数返回包括为零点的窗函数的首尾两个元素。2.3布莱克曼窗函数布莱克曼窗Blackman Window)函数的时域形式可以表示为2-6其频谱函数为 2-7其幅度函数