郭 敏,高俊浩
(国家无线电监测中心检测中心,北京 100041)
滤波器的分类方式多种多样:从通频带方面分类,有低通滤波器、高通滤波器、带通滤波器、带阻滤波器:从所处理的信号类型进行分类,可分为模拟滤波器和数字滤波器。数字滤波器的输入输出信号均是离散的,随着数字电路和计算机技术的快速发展,不同设计类型的数字滤波器在不同场景下得到了广泛应用。数字滤波器按其冲激响应函数的特性可分为:无限冲激响应IIR(Infinite Impulse Response)滤波器和有限冲激响应FIR(Finite Impulse Response)滤波器[1]。IIR数字滤波器的相位是非线性的,而FIR数字滤波器有精确的线性相位特质,具有非递归特性,良好的稳定性,较高的精确度。所以,FIR数字滤波器在数字信号处理、图像处理、传输数据等方面,得到了广泛的应用。
常用的FIR数字滤波器设计方法有窗函数法、频率采样法和切比雪夫等纹波逼近法[2]。本文以MATLAB为设计平台,研究分析不同窗函数对FIR滤波器设计的性能影响,进行仿真比较,最后给出了如何根据实际需求选择不同窗函数的设计建议。
傅立叶变换是数字信号处理的重要工具之一,其作用范围是正负无穷,但是在实际信号测试处理中,无法采样和分析无限长的信号,所以只能采取有限长度的信号进行测量和运算。因此,可以对原始时域信号hd(n)截取,将截取的部分片段信号进行周期扩展,这样就可以模拟实现得到一个虚拟的无限长信号,后续再对其进行傅立叶变换和频谱分析。但是,这样的截断会带来频谱泄露,使频谱发生畸变。所以,需要采用不同的截取函数w(n)对信号进行截断,可以有效减少频谱能量泄露,称此截取函数w(n)为窗函数,可用式(1)表示:
h(n)=hd(n)*w(n) (1)
图1展示了信号加窗函数前后的时域图和频谱图。如图1左上方所示,为信号未加窗函数处理,对信号部分截取后的时域图,其频域图如图1右上方所示,有较严重的频谱泄露现象。图1左下方的信号是在对原始截断后的信号基础上,做加窗处理得到的时域图,其起始时刻和末尾时刻幅度均为0,相当于加窗后将非周期信号转换成周期性信号,然后对该信号进行傅立叶变换,如图1右下方所示,与未加窗的频谱比较,泄漏得到明显改善,但没有完全消除。因此,窗函数可以有效减少频谱泄漏,但不能完全消除频谱泄漏。
工程中常用的窗函数有六种,分别为:矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗和凯塞窗[3]。不同窗函数特性有所不同,对信号的频谱特性影响不一样。
图1 信号加窗前后时域图和频域图对比
2.1.1 矩形窗函数
矩形窗的定义为:
式中,N为窗的长度。
其时域波形图和频域波形图如图2所示:
图2 矩形窗及其频谱特性(N=60)
由图2所见,矩形窗函数的主瓣宽度为4π⁄N,矩形窗主瓣宽度最窄,旁瓣衰减最大[3],旁瓣峰值比主瓣峰值低13 dB。
2.1.2 三角形窗函数
矩形窗存在0到1的越变,而三角形窗提供了一个比较缓慢的变化,其定义为:
其时域波形图和频域波形图如图3所示:
图3 三角形窗及其频谱特性(N=60)
由图3可见,三角形窗函数的主瓣宽度为8π⁄N,是矩形窗函数主瓣宽度的两倍,旁瓣峰值比主瓣峰值低26 dB。
2.1.3 汉宁窗函数
汉宁窗是一个升余弦窗,其定义为:
其时域波形图和频域波形图如图4所示:
图4 汉宁窗及其频谱特性(N=60)
由图4可见,汉宁窗函数的主瓣宽度为8π⁄N,是矩形窗函数主瓣宽度的两倍,旁瓣峰值比主瓣峰值低31 dB。
2.1.4 海明窗函数
海明窗和汉宁窗类似,其定义为:
其时域波形图和频域波形图如图5所示:
图5 海明窗及其频谱特性(N=60)
由图5所见,海明窗函数的主瓣宽度为8π⁄N,和汉宁窗函数的主瓣宽度一样,是矩形窗函数主瓣宽度的两倍,但海明窗的旁瓣峰值低于汉宁窗,旁瓣峰值比主瓣峰值低42 dB。
2.1.5 布莱克曼窗函数
布莱克曼窗函数和汉宁窗、海明窗类似,但是增加了升余弦的二次谐波分量,其定义为:
其时域波形图和频域波形图如图6所示:
图6 布莱克曼窗及其频谱特性(N=60)
由图6所见,布莱克曼窗函数的主瓣宽度为12π⁄N,是矩形窗函数主瓣宽度的三倍,旁瓣峰值比主瓣峰值低58 dB。
2.1.6 凯塞窗函数
凯塞窗不同于其他窗函数,是由零阶贝塞尔函数I0构成的窗函数,对于相同的N,可以通过调整参数β的值来选择不同的过渡带宽,其定义为:
其时域波形图和频域波形图如图7所示:
图7 凯塞窗及其频谱特性(N=60,β=8.5)
由图7所见,当β=8.5时,凯塞窗旁瓣峰值比主瓣峰值低62 dB。
从时域看,当β越大,窗的宽度越窄,从频域看,过渡带宽随β的增大而变宽,主瓣的宽度也随之增加,但频谱的旁瓣在减小,阻带最小衰减在增大,通带内更为平坦,如图8所示:
图8 不同β值的频谱特性对比(N=60,β1=4,β2=8.5)
2.1.7 不同窗函数对比总结
以连续信号x(t)=cos(2πf1t)+0.15cos(2πf2t),式中,f1=100Hz,f2=150Hz,采样频率fs=600Hz为例,采用矩形窗和布莱克曼窗分别对其进行滤波,结果如图9所示:
图9 采用矩形窗和布莱克曼窗对信号滤波结果对比(N=80)
(1)由图9可见,当窗的长度N相同时,由矩形窗函数设计的滤波器主瓣宽度最窄,过渡带宽最窄,但其阻带衰减最差,使得其频率分辨率最精确,幅度分辨率最差;由布莱克曼窗函数设计的滤波器主瓣宽度最宽[4],过渡带宽也最宽,但阻带最小衰减最大,使得其频率分辨率最低,幅度分辨率最精确。由其他窗函数设计的滤波器性能介于二者之间。
以汉宁窗为例,采用不同的N值,对上述信号进行滤波,其结果如图10所示:
图10 采用不同N值对信号滤波结果对比(N1=40,N2=100)
(2)由图10可见,当采用相同窗函数设计FIR数字滤波器时,主瓣宽度随着N的增加在变窄,过渡带宽随之在缩小,阻带最小衰减随之在变大。因此,当滤波器的阶数N值越大,滤波器的实际频率响应越接近理想的频率响应,抗干扰能力越强。
综上所述,由不同窗函数设计的FIR数字滤波器对信号的滤波效果和频谱特性有所不同。理想情况下,窗函数主瓣宽度越窄越好,其频率分辨率就越精确,越接近理想的频谱响应曲线;旁瓣最小衰减越大越好,其滤除干扰信号的能力越强,幅值精度就越高。但通常,主瓣宽度的减小是以旁瓣最小衰减的牺牲为代价的,二者不能兼得。
所以,在实际工程设计中,需要根据测试信号的特点和实际需求来选择不同的窗函数。如果需要测试出信号的精确频率,不需要准确区分信号的强度大小,那么可以选择主瓣宽度最窄的矩形窗函数,比如测量物体的自振频率;如果存在较强的干扰信号,需要增大对其的衰减能力才能分析所需信号,那么可以选择旁瓣衰减较大的汉宁窗函数;如果检测近似的两个频点、强度不同的信号,那么可选择布莱克曼窗函数;如果同时对幅值精度和频率精度要求较高的时候,那么可选择凯塞窗函数。
本文基于窗函数法设计FIR数字滤波器,介绍了窗函数的定义、加窗的意义、不同窗函数的性质及其对比、仿真分析不同窗函数对滤波器性能的影响,最后给出了在实际工程设计中,如何根据实际需求选择合适的窗函数,更好地进行信号分析和处理。