本文是FIR滤波器的第二个问题——窗函数法的第一篇。窗函数法,是FIR滤波器这部分内容的重点。
二 窗函数法
1. 设计原理
前面说了,FIR滤波器的单位冲激响应h(n)是有限长序列:
h(n)={b0,b1,b2,...,bN-1}
FIR滤波器设计,就是找到一组数字,构成h(n),使其滤波性能满足要求。
下面以低通滤波器为例来进行分析。
首先来看“最好”的低通滤波器——理想低通滤波器,长什么样?
上图是它在频域的样子,用公式来表示,频率响应为:
理想低通对于通过它的信号中,大于wc的频率成分,寸草不留,低于wc的频率成分,毫发无伤。太牛了!
别人家的孩子。可惜,实际系统的频率响应,永远无法达到上式或上图。为什么呢?我们来求一下理想低通的单位冲激响应hd(n) 就明了了。
将上式带入IDTFT的公式,就可以求得,理想低通的hd(n)如下式(具体积分过程就省略了):
画出图来:
看到了吧,理想低通的hd(n),是个无限长的序列,在n<0的时候函数值有非零值,所以它是个非因果系统。也就是说,是物理不可实现的。
那怎么办呢?我们用因果的系统去逼近它。怎么把它变成因果的呢?只能舍弃掉n<0的值,只保留n≥0的部分。
还要把无限长变成有限长,也就是截取N个点。怎么截呢?像下图这样子截行吗?
上图这样子截取的话,得到的h(n)=hd(n)RN(n),也是FIR滤波器,并且是因果的,这没问题。但是,它就可能不满足线性相位的特性了。
其实,我们只需要稍作努力就可以使它具有线性相位的特性。上一篇中推导了,如果h(n)关于 (N-1)/2 偶对称,那么它一定是线性相位的。怎么使得截取后的h(n)偶对称呢?像下图这样子不就行了嘛:
使Sa函数主瓣的最高点位于0~N-1的中间,也就是
总结一下:把理想低通的单位冲激响应hd(n)截取n=0~N-1这N个点,得到FIR滤波器的单位冲激响应:
h(n)=hd(n)RN(n)
那,弱弱地问一句,这个FIR,性能如何呢?
要分析它的滤波性能,就要求h(n)的傅里叶变换,法宝来了,”时域相乘,频域卷积“。
FIR滤波器的频谱,是理想低通的频谱函数与矩形窗的频谱函数之卷积。
理想低通的频谱函数长啥样我们知道(就是文章开头的“别人家的孩子”图),矩形窗的频谱是啥?求RN(n)的DTFT呀:
这两个东西,卷积后会是啥模样呢?严格的公式推导不容易,定性分析即可。信号与系统中学习过的卷积的图解法派上用场了。
最终的结果(FIR滤波器的幅频特性,也就是咱家的孩子)如下图:
上图中,虚线是理想低通的幅度谱,实线是FIR的幅度谱,这差距不是一般的大啊。简直是一个天上、一个地下,那就是“学渣”和“学神“的区别啊
。第一个区别:“学神”(理想低通)在通带内是常数,阻带内是0;而“学渣”(加矩形窗得到的FIR)呢,都是起伏波动的,并且,越靠近wc处,波动越大。
第二个区别:“学神”从通带到阻带,是直上直下的;而“学渣”从通带到阻带,是一个幅度逐渐下降的过程。
那么,如何评价“学渣”到底怎么样呢?也就是说这个FIR的性能如何呢?我们关心两个指标,一个是过渡带宽度,我们希望,过渡带越窄越好。我们分析一下从幅度最高点到幅度最低点的宽度有多宽呢?恰好是矩形窗频谱的主瓣宽度(看一下前面的动画演示)4Π/N,也就是说,增大N可以得到较窄的过渡带。这个很容易实现。哎,看来在这一点上“学渣”也可以提升自我哦。
另一个指标,就是通带和阻带的波纹系数,上图中直接给出了这个值,是0.0895(怎么计算出来的呢?比较复杂,要算最高点或最低点处对应的积分值,幸好一百多年前的吉布斯老爷爷已经算出来啦),转换成dB,阻带最小衰减就是-20×log10(0.0895) ≈21dB。
这个衰减在工程上是远远不够的,我们希望它再大一点,能不能改善呢?很抱歉,矩形窗说,臣妾无能为力
。因为这个值是由矩形窗的第一旁瓣(最大的旁瓣)决定的,改变N,不能改变旁瓣与主瓣的幅度之比。也就是说,“学渣”的智商是老天爷决定的,后天再怎么努力也无济于事。总结一下:
加窗后得到的FIR滤波器,通带和阻带之间出现过渡带,过渡带宽度取决于窗函数的主瓣宽度;
通带和阻带内的幅频特性出现起伏波动,波动的大小,取决于窗函数旁瓣的幅度;
增大长度N,可以减小过渡带宽度,但不能减小起伏波动。
这种现象其实很容易理解。我们在FFT频谱分析中也曾经讲到过,矩形窗在起点和终点都是不连续的,也就是说,数据是突然开始、突然结束的。从物理概念上很好解释,这种时域上的突然变化,意味着频域上存在高频分量。如果抑制了这些高频分量,就能够降低旁瓣幅度。因此从这样一个角度,直观上就可以想到,窗函数的起始处和结束处越平坦,对旁瓣的抑制就应该越好。这就是本节的第二个问题”各种窗函数“。下一篇将会详细说明。
下一篇预告:各种常用窗函数。
联系客服