weixin 发表于 2019-10-24 14:31

FFT分析的注意事项,您都知道吗?

对信号进行傅立叶分析,可以将信号描述成一系列余弦(实部)和正弦(虚部)信号之和或者描述成带相位的余弦信号(幅值和相位形式)。作为演示实例,我们对两个正弦波组成的信号进行傅立叶分析,两个正弦波分别如图1、2所示。这两个信号组成的复合波形如图3所示。

图1 正弦波64Hz,单位幅值,0相位

图2 正弦波192Hz,幅值0.25,相位30度

图3 复合波形
如果我们对这个复合信号进行快速傅立叶分析 (FFT),这个复合波形的FFT结果如图4所示。图4 64Hz和192Hz信号的FFT结果
从图4中可以直观地看到,在幅频曲线中有两个明显的峰值,相位曲线中相位有两处改变明显,这两个位置对应的频率分别为64Hz和192Hz。
FFT分析得到的信号幅值刚好为原始正弦波幅值的一半。64Hz的正弦波的幅值为1,但FFT显示为0.5;192Hz的正弦波的幅值为0.5,而FFT显示为0.125,这是为什么呢?其实,这是因为当我们对信号进行频谱分析时,一些能量用正频率表示,一半能量用负频率表示。对于一个实数的时域信号而言,与之相对的是复数的时域信号,那么能量会被划分为等量的两份,我们刚好得到了其中的一半。为了克服这一点,一些软件会将信号的幅值加倍,这也就是所谓的半谱分布,其兼顾全范围的幅值。
现在让我们来考虑相位部分。原始的64Hz正弦信号的相位为0,192Hz正弦波的相位为30度。从64Hz的相频曲线中可以看出相位从0突变到-90度,这是为什么?这是因为傅立叶变换分析使用余弦和正弦函数,实际是用余弦,不是正弦。因此,正弦波形相位移动-90度为余弦,这也就是我们在相频曲线中所看到的。在192Hz处,相位不是30度,而是-60度。这是完全正确的,因为我们有 (-90+30)=-60度。
上述的例子中的信号采样率为1024,用512个数据点表示,因而,我们有0.5s的数据。因此,当我们用FFT进行傅立叶分析时,频谱图中的频率间隔为2Hz。这是一个基本关系:如果FFT分析的数据长度为T秒,那么频率间隔为1/THz。
选择FFT的数据块大小为N,这将决定用于分析的信号有效长度。如果选择FFT分析的数据点为256,采样率为1024,那么,我们用于分析的信号有效长度将为1/4秒,频率间隔将是4Hz。
因为我们处理的工程分析信号是测量物理事件的信号,显然,设置频率间隔更明智,而不是任意选择FFT分析数据点数,这个参数与我们测量的物理问题关系不大。因此,通常设置的是频率间隔。
“不精确的”频率成分
在上面这个例子中,正弦波的频率刚好是频率间隔的整数倍。这是特定选择的结果,因为我们知道0.5s的数据给定的频率间隔为2Hz。现在,假设我们有一个正弦信号像最初的64Hz,但频率是63Hz。此时,信号的频率成分不再是频率间隔的整数倍,会发生什么情况?从时域上看,很难看出有任何的差异,但实际上这个明显的差异来自于傅立叶分析的结果。63Hz,0相位,单位幅值的正弦波的FFT结果如下图所示。图5 63Hz的FFT结果
注意到这个结果不再像图4那样的尖钉,而是一个顶部被削掉的“尖钉”。在62Hz和64Hz处,幅值几乎相同,但不是0.5,而是约为0.32。进一步,相位在62Hz是0,在64Hz是180度。傅立叶分析告诉我们有一个复合的信号,两个主要的正弦波是62Hz和64Hz,其幅值为0.32,相位分别为0和180度。而实际上,我们知道信号是一个63Hz的单频正弦波。
如果我们将64Hz和63Hz的正弦波的FFT结果进行叠加,如下图所示,可以看出二者有明显的不同。图6 叠加63Hz和64Hz信号的FFT结果重叠
这一点表明,当你解释说明正弦波的FFT结果时,你必须小心,因为显示的结果将依赖于信号的实际频率与“测量的”频率之间的关系。在这两个例子中,虽然幅值变化显著,但是如果你比较整个频率范围内频谱的RMS值,那么64Hz给出的RMS为0.707107,63Hz给出的RMS值为0.704936。
以上的结果是用FFT算法获得的。对于FFT而言,频率间隔是信号长度的函数。考虑到现代PC机的计算速度,我们也可以使用原始的直接傅立叶变换方法 (Direct Fourier Transform, DFT)。DFT允许我们去选择起始频率、结束频率和频率间隔。当然,DFT比FFT要慢得多。现在选择从40Hz到80Hz的区间,步长为0.1Hz的结果如下图所示的连续曲线。带*的标识为相应的FFT分析结果。图7 63Hz正弦波的DFT分析结果
这显示了响应的主瓣,在63Hz处的幅值为0.5,相位为-90度。从62Hz到64Hz,相位从0变化到-180度。注意到这样数量的相位变化通常是从“精确的”频率到邻近频率。
上面这图显示了所有的“旁瓣”,这也说明了数字信号处理的另一方面,也就是众所周知的频谱泄漏。这个的主要原理是在一个频率处的能量“泄漏”到其他所有的频率处了。通过选择一个合适的数据窗函数可以减少泄漏。图7曲线的形状实际上是所谓的“频谱窗”。经常把这个认为是有效分析过滤器的形状可能更合适。在这个例子中,使用的窗函数是矩形窗。有关不同窗函数和它们相应的频谱在这不作详细讨论。
在这注意到,我们要小心地使用“频率间隔”而不是“频率分辨率”。显然,对于DFT和其他一些分析技术,我们可以改变频率间隔。对于FFT方法,频率间隔与“数据块大小”相关。但什么是频率分辨率?这是一个很大的主题,但在这我们只给出这个主题的本质。这个问题的线索就是图7中的频谱窗的形状。频率分辨率的工作定义是指分辨两个密集频率的能力。另一个更普遍的定义是频谱窗的半功率点 (-3dB)。现实中最有用的定义是频率带宽,称为等效噪声带宽 (ENBW),这个跟半功率点的定义非常相似。ENBW由窗函数的形状和FFT分析数据块的长度决定。信号持续时间的影响
如果我们取更长一段时域数据进行FFT分析,那么,频率间隔将更小。大多数情况下,这将有利于我们解决问题,但是如果所取的数据没有精确匹配信号的持续时间,那么会出现相同的现象。

傅立叶分析告诉我们一组正弦信号的幅值和相位,这组信号同原始的信号具有相同的持续时间。假设现在我们考虑的信号仍是由64Hz的单位幅值和192Hz,幅值为0.25的两个正弦波组成。但是64Hz的信号只作用在前半段,192Hz的信号只作用在后半段,我们整个信号的时间为1秒,如图8所示。图8 两个正弦信号连接
这两个连接的信号的FFT结果如下图所示。图9 两个连接的正弦信号的FFT结果
信号的频率成分,如预期一样,出现在64Hz和192Hz。但是,半幅值(半谱的幅值)现在是0.25(之前是0.5)和0.0625(之前是0.125)。从图上获得的解释在64Hz频率处有个正弦波,其半幅值是0.25,信号出现的时间长度为整个1秒钟;另一个正弦信号是192Hz,半幅值是0.0625,持续时间也是整个1秒钟。但是我们知道,原始的信号的半幅值是0.5,持续时间只是前半秒,另一个信号的半幅值是0.125,持续时间是后半秒。到底发生了什么,使得结果与原始信号不同?
仔细考虑64Hz附近的频谱,如图10所示,这揭示了在64Hz附近,有大量的频率成分。这时的频率间隔是1s,因为我们有1s的时域数据。它们的相对幅值和相位组合使得信号在前半部分的幅值在64Hz处加倍,在后半部分没有信号存在。相同的情况也发生在192Hz附近。图10 连接的信号的FFT结果(局部)
还有一种情况是用0值拓展信号,这时,幅值也会减少。在这种情况下,幅值减少量与0值拓展百分比成正比。
那么,从这个例子中可以看出,当信号持续整个FFT分析的时域数据段全程时,信号的幅值才不会失真,当信号的持续时间少于整个时域全程时,其FFT分析得到的幅值是失真的。这是傅立叶分析非常重要的注意事项,也就是假设正弦和余弦信号持续整个FFT分析的时间全程。正弦扫频信号
对于正弦扫频信号而言,理论上每个频率成分只持续一瞬时。一个正弦扫频信号从10Hz扫到100Hz,如下图所示。图11 单位幅值的正弦扫频信号从10Hz 到100Hz图12 正弦扫频信号的FFT结果
图中这个扫频信号有512个数据点,采样率为1024Hz。因此,扫频速率是180Hz/s。信号的FFT结果显示幅值约为0.075。整个扫频时间段,相位从0附近变化到-2000度,然后在100Hz以上稳定在-180度。如果扫频速率更低,约为10Hz/s,那么信号的幅值将变成0.019左右。频谱的幅值大小和原始扫频信号的扫频速率之间的关系不直观。
显然,要解释简单的傅立叶分析,不管是做FFT还是DFT,都要注意这些事项。傅立叶分析表明连续正弦波的幅值和相位是存在整个FFT分析的全程的。虽然我们没有讨论FFT的可逆性,但事实是傅立叶分析的信号是可逆的。也就是说如果我们有傅立叶分析整个频率区间(从0到奈圭斯特频率),那么我们可以进行傅立叶逆变换得到时域信号。有一点要注意,如果信号中有任何随机噪声存在,那么傅立叶变换也会将这个噪声变换到时域。傅立叶变换自身不会去除或最小化噪声的影响,因此,简单的傅立叶分析不适用于随机数据,但适合于瞬态、复杂的或简单的周期信号,如发动机在稳定转速下产生的信号。
页: [1]
查看完整版本: FFT分析的注意事项,您都知道吗?