源网址:https://www.vfe.cc/NewsDetail-878.aspx
经常看到FFT补零是否可以提高频率分辨率的讨论,事实上,只要我们明确傅里叶变换的本质,就很容易判断补零对傅里叶变换的影响。
从根本上讲,傅里叶变换仅仅是一种变换而已。所谓变换,是指经过傅里叶变换,得到的是输入信号的另外一种表现形式。
具体上讲,傅里叶变换是一种时域与频域之间的转换,傅里叶变换的输入是时域信息,输出是频域信息。利用傅里叶变换,可以通过时域信息得到频域信息,反之,得到的频域信息通过傅里叶逆变换,可以得到与傅里叶变换输入相同的时域信息。
一句话总结,傅里叶变换的输入与输出,具有不同的表现形式,但是,都表示同一个信号。
FFT补零主要发生在两种场合:
1、傅里叶点数不是2的N次幂,通过补零得到2的N次幂个点,这种情况下,一般补零的数量不会太多。
2、由于傅里叶变换得到的频域信息的频率分辨率与傅里叶变换输入的时域信息代表的时间长度的倒数相等。因此,有人希望通过给时域信息补零,延长时域信息代表的时间,从而提到频域信息的分辨率。这种情况下,补零的数量取决于希望达到的频率分辨率。
就数学上讲,上述两种情况下,FFT输出的频率分辨率都提高了。
例如:采样频率为1024Hz,采样得到的序列包含1000点,1000个点数据不能进行FFT变换,若采用DFT变换,DFT输出的频率分辨率为1.024Hz。补上24个零,得到1024点的序列,进行FFT变换,FFT输出的频率分辨率为1Hz,频率分辨率由1.024Hz提高到了1Hz;若补上1048个零,序列代表的时间长度为2S,FFT输出的频率分辨率0.5Hz,频率分辨率由1Hz进一步提高到0.5Hz。
这样看来,FFT补零的确可以提高频率分辨率,并且,只要你愿意,可以无限的提高!
值得注意的是,零也是数据,在FFT变换时,算法并不能识别哪些为有用,哪些为无用,补零就是改变了FFT的输入,输出自然也会改变。
FFT补零得到的频谱,代表的是补零后的波形,而补零后的波形与原始波形是不一样的,不是我们真正关心的波形。换言之,FFT补零的确可以提高频率分辨率,但是,FFT输出结果误差增大了,当补零数过多时,误差达到不可接受的程度时,就是错误了。
傅里叶变换得到的频谱中,最低频率分量的频率f0等于傅里叶时间窗的长度(输入序列代表的时间长度)的倒数。频率为f0的频率分量称为基波,若被测波形不是频率为f0的正弦波,那么,傅里叶频谱中,必然还包括与该频率成整倍数的其它频率分量,这些分量称为谐波。
看下面这个具体的例子:
被测波形为50Hz正弦波,采样率为1000Hz,采样时间为20mS,得到图1所示的20个采样点的序列,采用DFT对该序列进行变换,频谱中,只有50Hz的谱线,频率分辨率为50Hz。
这是正确的结果,可以反映输入波形的特征。
WP4000变频功率分析仪的基波测量和谐波分析就是采样的方式,一方面确保对被测信号进行整周期截断,另一方面由于采用DFT,序列点数不受2的N次幂的限制。
图1. 50Hz正弦波的20个原始采样点
图2. 补零后的32个采样点
如果我们采用FFT,由于20不等于 2的N次幂,我们补上12个零,得到如图2的32点的序列。
对比图2和图1,我们发现,补零后FFT的分析对象变了。这是一个什么样的对象呢?
由于实际信号一般是无限长序列,而FFT针对的序列总是有限长的,因此,傅里叶变换基于这样一种假设,假设实际信号以输入的有限长序列为周期,并按照该周期进行周期延拓。我们将图1和图2的序列进行周期延拓后,得到图3和图4的序列。
图3. 原样本序列周期延拓后的无限长序列
图4. 补零后序列周期延拓后的无限长序列
图中可以直观地看出,图3是周期为20mS,频率为50Hz的正弦波,而图4是周期为32mS,频率为31.25Hz的特殊波形。就时域图中,我们看不出其频谱,但是,依据傅里叶论断,该波形对应的频谱仅包含频率为31.25Hz的基波及频率为31.25Hz整数倍的谐波,一定不包含50Hz的频率分量。
图3的频率的频率分辨率为50Hz,图4的频率的频率分辨率为31.25Hz。频率分辨率确实提高了,但是,补零后得到的频谱(图4对应的频谱)不是我们想要的!
一句话:FFT补零可以提高频率分辨率,但是,补零得到的不是我们需要的频谱。