离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

傅里叶变换的意义

 

傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。这是从数学的角度去看傅立叶变换。

 

那么从物理的角度去看待傅立叶变换,它其实是帮助我们改变从传统的时间域分析信号的方法转到从频率域分析问题的思维,下面的一幅立体图形可以更好地理解这种角度的转换:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

所以,最前面的时域信号在经过傅立叶变换的分解之后,变为了不同正弦波信号的叠加,我们再去分析这些正弦波的频率,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用 FFT 变换的原因。另外,FFT 可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

 

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

FFT 是怎样完成的

 

首先,按照被变换的输入信号类型不同,傅立叶变换可以分为 4 种类型:

(1)非周期性连续信号傅立叶变换(Fourier Transform);

(2)周期性连续信号傅立叶级数(Fourier Series);

(3)非周期性离散信号离散时域傅立叶变换(Discrete Time Fourier Transform);

(4)周期性离散信号离散傅立叶变换(Discrete Fourier Transform)。

 

下面是四种原信号图例:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

这里要讨的论是离散信号,对于连续信号不作讨论,因为计算机只能处理离散的数值信号,最终目的是运用计算机来处理信号的。所以对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到,在计算机面前只能用 DFT 方法,我们要讨论的 FFT 也只不过是 DFT 的一种快速的算法。

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

DFT 的运算过程是这样的:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

可见,在计算机上进行的 DFT,使用的输入值是数字示波器经过 ADC 后采集到的采样值,也就是时域的信号值,输入采样点的数量决定了转换的计算规模。变换后的频谱输出包含同样数量的采样点,但是其中有一半的值是冗余的,通常不会显示在频谱中,所以真正有用的信息是 N/2+1 个点。

 

FFT 的过程大大简化了在计算机中进行 DFT 的过程。简单来说,如果原来计算 DFT 的复杂度是 N*N 次运算(N 代表输入采样点的数量),进行 FFT 的运算复杂度是 N*lg10(N),因此,计算一个 1000 采样点的 DFT,使用 FFT 算法只需要计算 3000 次,而常规的 DFT 算法需要计算 1000000 次。

 

典型的时域 2 分裂算法图示如下:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

变换前后信号的对应关系

 

以一个实际的信号为例来说明:示波器采样得到的数字信号,就可以做 FFT 变换了。N 个采样点,经过 FFT 之后,就可以得到 N 个点的 FFT 结果。为了方便进行 FFT 运算,通常 N 取 2 的整数次方。

 

假设采样频率为 Fs,信号频率 F,采样点数为 N。那么,FFT 之后结果就是一个为 N 点的复数。每一个点就对应着一个频率点,这个点的模值,就是该频率值下的幅度特性。

 

具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为 A,那么 FFT 的结果的每个点(除了第一个点直流分量之外)的模值就是 A 的 N/2 倍。而第一个点就是直流分量,它的模值就是直流分量的 N 倍。

 

而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即 0Hz),而最后一个点 N 的再下一个点(实际上这个点是不存在的,这里是假设的第 N+1 个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率 Fs,这中间被 N-1 个点平均分成 N 等份,每个点的频率依次增加。例如某点 n 所表示的频率为:Fn=(n-1)*Fs/N

 

由上面的公式可以看出,Fn 所能分辨到频率为 Fs/N,如果采样频率 Fs 为 1024Hz,采样点数为 1024 点,则可以分辨到 1Hz。1024Hz 的采样率采样 1024 点,刚好是 1 秒,也就是说,采样 1 秒时间的信号并做 FFT,则结果可以分析精确到 1Hz。如果采样 2 秒时间的信号并做 FFT,则结果可以分析精确到 0.5Hz。如果要提高频率分辨率,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。

 

下面这幅图更能够清晰地表示这种对应关系:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

变换之后频谱的宽度与原始信号也存在一定的对应关系。根据 Nyquist 采样定理,FFT 之后的频谱宽度最大只能是原始信号采样率的 1/2,如果原始信号采样率是 4GS/s,那么,FFT 之后的频宽最多只能是 2GHz。时域信号采样周期的倒数,即采样率乘上一个固定的系数即是变换之后频谱的宽度,即Frequency Span = K*(1/ΔT)。其中,ΔT 为采样周期,K 值取决于我们在进行 FFT 之前是否对原始信号进行降采样(抽点),因为这样可以降低 FFT 的运算量。如下图所示:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

可见,更高的频谱分辨率要求有更长的采样时间,更宽的频谱分布需要提高对于原始信号的采样率。

 

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

几种典型周期函数的频谱图

 

 01. 频谱泄露 

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

所谓频谱泄露,就是信号频谱中各谱线之间相互干扰,使测量的结果偏离实际值,同时在真实谱线的两侧的其它频率点上出现一些幅值较小的假谱。产生频谱泄露的主要原因是采样频率和原始信号频率不同步,造成周期的采样信号相位在始端和终端不连续。

 

简单来说就是因为计算机的 FFT 运算能力有限,只能处理有限点数的 FFT,所以在截取时域的周期信号时,没有能够截取整数倍的周期。信号分析时不可能取无限大的样本。只要有截断不同步就会有泄露,如下图所示:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)
离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

上图的信号频率为 2.1MHz,采集时间内没有截取整数倍周期的信号,FFT 运算之后谱线的泄露现象严重,可以看到能量较低的谱线很容易被临近的能量较高的谱线的泄露给淹没住。

 

因此,避免频谱泄露的方法除了尽量使采集速率与信号频率同步之外,还可以采用适当的窗函数。不同的窗函数对频谱谱线的影响不同,基本形状可以参看下图:

 

离散傅里叶变换(DFT)和快速傅里叶变换(FFT)

 

可以看到,不同的窗函数的主瓣宽度和旁瓣的衰减速度都不一样,所以对于不同信号的频谱应该使用适当的窗函数进行处理。

 

 02. 矩形窗(Rectangular)

 

加矩形窗等于不加窗,因为在截取时域信号时本身就是采用矩形截取,所以矩形窗适用于瞬态变化的信号,只要采集的时间足够长,信号宽度基本可以覆盖整个有效的瞬态部分。

 

 03. 汉宁窗(Von Hann)

 

如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小。在这种情况下,需要选择一个主瓣够窄的窗函数,汉宁窗是一个很好的选择。

 

 04. flattop 窗 

 

如果测试的目的更多的关注某周期信号频率点的能量值,比如更关心其 EUpeak,EUpeak-peak,EUrms,那么,其幅度的准确性则更加的重要,可以选择一个主瓣稍宽的窗,flattop 窗在这样的情况下经常被使用。

 

 

 

 

本文源自微信公众号:中科蓝海ZKBO

原文标题:《离散傅里叶变换(DFT)和快速傅里叶变换(FFT)》

原文链接:https://mp.weixin.qq.com/s/invjpLE6OglRsaS84C0OVA

本转载仅出于分享优质测试干货,旨在传递更多观点,并不代表赞同其全部观点或证实其内容的真实性。文章中所包含的图片、音频、视频等素材的版权均归原作者所有。如有侵权请告知删除。

(0)
上一篇 6小时前
下一篇 2025年10月16日 上午9:30

相关推荐