FFT的物理意义 您所在的位置:网站首页 fft计算频谱 FFT的物理意义

FFT的物理意义

2023-09-16 18:25| 来源: 网络整理| 查看: 265

来源:学步园 FFT(Fast Fourier Transform,快速傅立叶变换)是离散傅立叶变换的快速算法,也是我们在数字信号处理技术中经常会提到的一个概念。在大学的理工科课程中,在完成高等数学的课程后,数字信号处理一般会作为通信电子类专业的专业基础课程进行学习,原因是其中涉及了大量的高等数学的理论推导,同时又是各类应用技术的理论基础。 关于傅立叶变换的经典著作和文章非常多,但是看到满篇的复杂公式推导和罗列,我们还是很难从直观上去理解这一复杂的概念,我想对于普通的测试工程师来说,掌握FFT的概念首先应该搞清楚这样几个问题:(1) 为什么需要FFT (2) 变换究竟是如何进行的 (3) 变换前后信号有何种对应关系。 在这篇文章中我尝试用更加浅显的讲解,尽量不使用公式推导来说一说FFT的那些事儿。

为什么需要FFT?

FFT(快速傅立叶变换)是离散傅立叶变换的快速算法. 傅立叶变换的物理意义在哪里? 傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。当然这是从数学的角度去看傅立叶变换。 那么从物理的角度去看待傅立叶变换,它其实是帮助我们改变传统的时间域分析信号的方法转到从频率域分析问题的思维,下面的一幅立体图形可以帮助我们更好得理解这种角度的转换:

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

变换是如何进行的? 首先,按照被变换的输入信号类型不同,傅立叶变换可以分为4种类型: 1、 非周期性连续信号傅立叶变换(Fourier Transform) 2、 周期性连续信号傅立叶级数(Fourier Series) 3、 非周期性离散信号离散时域傅立叶变换(Discrete Time Fourier Transform) 4、 周期性离散信号离散傅立叶变换(Discrete Fourier Transform)

下面是四种原信号图例:

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

其中, X(k)—频域值 X(n)—时域采样点 n—时域采样点的序列索引 k—频域值的索引 N—进行转换的采样点数量

可见,在计算机或者示波器上进行的DFT,使用的输入值是数字示波器经过ADC后采集到的采样值,也就是时域的信号值,输入采样点的数量决定了转换的计算规模。变换后的频谱输出包含同样数量的采样点,但是其中有一半的值是冗余的,通常不会显示在频谱中,所以真正有用的信息是N/2+1个点。 FFT的过程大大简化了在计算机中进行DFT的过程,简单来说,如果原来计算DFT的复杂度是N2次运算(N代表输入采样点的数量),进行FFT的运算复杂度是Nlg10(N),因此,计算一个1,000采样点的DFT,使用FFT算法只需要计算3,000次,而常规的DFT算法需要计算1,000,000次! 我们以一个4个点的DFT变换为例来简单说明FFT是怎样实现快速算法的:

计算得出:

其中的红色部分在FFT中是必须计算的分量,其他蓝色部分不需要直接计算,可以由红色的分量直接推导得到,比如: x(1)e-j0 = -1*x(1)e-jπ x(2)e-j0 = x(2)e-j2π … …

这样,已经计算出的红色分量只需要计算机将结果保存下来用于之后计算时调用即可,因此大大减少了DFT的计算量。

变换前后信号有何种对应关系?

我们以一个实际的信号为例来说明: 示波器采样得到的数字信号,就可以做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。如果要提高频率分辨率,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。

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

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

可见,更高的频谱分辨率要求有更长的采样时间,更宽的频谱分布需要提高对于原始信号的采样率,当然我们希望频谱更宽,分辨率更精确,那么示波器的长存储就是必要的!它能提供在高采样率下采集更长时间信号的能力。

频谱泄露

所谓频谱泄露,就是信号频谱中各谱线之间相互干扰,使测量的结果偏离实际值,同时在真实谱线的两侧的其它频率点上出现一些幅值较小的假谱。产生频谱泄露的主要原因是采样频率和原始信号频率不同步,造成周期的采样信号的相位在始端和终端不连续。简单来说就是因为计算机的FFT运算能力有限,只能处理有限点数的FFT,所以在截取时域的周期信号时,没有能够截取整数倍的周期。信号分析时不可能取无限大的样本。只要有截断不同步就会有泄露。如下图所示:

图中被测信号的开始端相位和截止端相位相同,表示在采集时间内有整数倍周期的信号被采集到,所以此时经行FFT运算后得出的频谱不会出现泄露。

上图的信号频率为2.1MHz,采集时间内没有截取整数倍周期的信号,FFT运算之后谱线的泄露现象严重,可以看到能量较低的谱线很容易被临近的能量较高的谱线的泄露给淹没住。 因此,避免频谱泄露的方法除了尽量使采集速率与信号频率同步之外,还可以采用适当的窗函数。 另外一个方法是采集信号时间足够长,基本上可以覆盖到整个有效信号的时间跨度。这种方法经常在瞬态捕捉中被使用到,比如说冲击试验,如果捕捉的时间够长,捕捉到的信号可以一直包括了振动衰减为零的时刻。在这种情况下,可以不加窗函数。 窗函数其实就是一个加权函数,它在截取的信号时间段内有值,时间段之外值为0:,记为: w(t)=g(t) -T/2



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有