26.7 窗函数对于FFT结果的影响
所谓频谱泄露,就是信号频谱中各谱线之间相互干扰,使测量的结果偏离实际值,同时在真实谱线的两侧的其它频率点上出现一些幅值较小的假谱。产生频谱泄露的主要原因是采样频率和原始信号频率不同步,造成周期的采样信号的相位在始端和终端不连续。简单来说就是因为计算机的FFT运算能力有限,只能处理有限点数的 FFT,所以在截取时域的周期信号时,没有能够截取整数倍的周期。信号分析时不可能取无限大的样本。只要有截断不同步就会有泄露。
在图6和图7中,为了最大化 FFT 运算之后的频率分辨率,我们使用了矩形窗。图中的时域信号是500MHz 正弦波信号,在频谱上应该仅在 500MHz 频点上看到谱线。FFT 运算研究的是整个时间域(-∞,+∞)与频域的关系,所以对于矩形窗函数截取的波形应该认为是无穷延续的,因此,矩形窗 100ns 时间窗内,包含了 500MHz 正弦波整 50 个周期,所以波形的首尾能够整周期得无缝连接,FFT 之后的频谱会在 500MHz 频点看到较为纯净的能量值。如下图6所示图 6:矩形时间窗口内包含整数倍周期的信号,首尾可以“无缝”连接
事实上,大多数类型的信号都不满足上面的这种特殊情况,绝大多数信号在时间窗口内都不是整周期的倍数,在这种情况下,FFT 之后的频谱就不能看做连续的正弦波了。例如,如果该正弦波的频率是495MHz,在 100ns 时间窗口内包含 49.5 个周期,因此在截取窗口的首尾部分就存在很大程度上的“不连续”,这种“不连续”会直接影响 FFT 之后的结果。“不连续”部分的能量会散落在整个频谱范围内,使用100ns 时间窗口,FFT 之后的频率分辨率是 10MHz,495MHz 频点即落在 490MHz 与 500MHz 之间,所以495MHz 正弦波信号的能量分成两部分,所以从频谱上看,峰值谱线明显降低了,这被称作是频谱泄露(Leakage)。如下图7所示:图 7:对于非整数倍周期信号进行 FFT 运算的效果
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截短产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)
为了减少频谱旁瓣和栅栏效应的影响, 我们在 FFT 运算中使用窗函数,图8显示了 Hanning (汉宁窗)使用后的效果。窗函数位于下图中左上角的栅格中红色的波形,叠加在黄色的时域信号上。窗函数与时域信号时域相乘。结果显示在左下角的蓝色波形。右下角的粉色波形显示了进行 FFT 计算之后的频谱图,相对于右上角的使用窗函数之前的频谱图来说,旁瓣的幅度已经大大减低。
对于不同的应用需求还有多种不同的窗函数供工程师选择,Hanning(汉宁窗)是使用最广泛的一种窗函数,除此之外,Hamming(海明窗),Flat-top 窗和 Balckman-Harris 窗的效果,在下图中做了对比,图中的信号使用 500MHz 正弦波,矩形窗产生最窄的谱线,加 Flat-top 窗谱线最宽。图8: 500MHz 正弦波频谱在不同窗函数下的对比
下图9中显示了同样的窗函数对比,但是采用 495MHz 正弦波进行 FFT 运算,矩形窗显示了最差旁瓣效果,Flat-top 窗函数基本上保持了与图8一样的旁瓣效果,所以我们看到旁瓣的影响和精确频率分辨率有时候是不可兼得的。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;Flat-top 窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)。图 9:495MHz 正弦波频谱在不同窗函数下的对比
图 10 中显示了不同的窗函数对于栅栏效应的抑制效果,图中的正弦波频率从 450MHz 增加到 550MHz,步进值为 500KHz,Flat-top 窗在整个频段上基本保持相同的值,矩形窗函数有约 4dB 的差值。图10:从 500MHz 到 600MHz,不同窗函数的峰值变化
我们把关于窗函数的一些重要的结论总结如下:
1、 连续的 FFT 运算并没有窗函数的概念,因为信号是充满时间坐标轴的,FFT 之后的频率分辨率是0,并不存在栅栏效应。但是,示波器采集和处理的信号全部是离散的采样点,是非连续的,所以 DFT 之后的频谱一定存在栅栏效应。
2、 如果能够保证示波器时间窗口内的信号是整数倍周期的(并且在信号时间窗口之前和之后的信号都是严格周期重复的),或者采集信号时间足够长,基本上可以覆盖到整个有效信号的时间跨度。这种方法经常在瞬态捕捉中被使用到,比如说冲击试验,如果捕捉的时间够长,捕捉到的信号可以一直包括了振动衰减为零的时刻。在这种情况下,可以不加窗函数。
3、 如果不满足 1 和 2,那么 FFT 计算之后的频谱就不可避免受到频谱泄露(Leakage)的影响,如频点分裂,幅值能量不精确等等,总之就是频谱线比较难看,这时候就需要使用适当的窗函数,以满足我们工程测量的需要。
4、示波器中的 FFT 运算,不加窗和加矩形窗是一回事。
5、窗函数会改变频域波形,让频谱形成人们“喜欢”的形状,但是不会本质上消除频谱泄露,不同的窗函数都有其独特的特性,我们只需要根据工程测试的需要,选择一款合适的就可以了。 |