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