快速傅里叶变换在信号处理中的应用

傅里叶变换FT(Fourier Transform)是一种将信号从时域变换到频域的变换形式。它在声学、信号处理等领域有广泛的应用。计算机处理信号的要求是:在时域和频域都应该是离散的,而且都应该是有限长的。而傅里叶变换仅能处理连续信号,离散傅里叶变换DFT(Discrete Fourier Transform)就是应这种需要而诞生的。它是傅里叶变换在离散域的表示形式。但是一般来说,DFT的运算量是非常大的。在1965年首次提出快速傅里叶变换算法FFT(Fast Fourier Transform)之前,其应用领域一直难以拓展,是FFT的提出使DFT的实现变得接近实时。DFT的应用领域也得以迅速拓展。除了一些速度要求非常高的场合之外,FFT算法基本上可以满足工业应用的要求。由于数字信号处理的其它运算都可以由DFT来实现,因此FFT算法是数字信号处理的重要基石。

傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。如图1所示,即为时域信号与不同频率的正弦波信号的关系,这是最近翻阅文献看到的对于时域频域表示的最简单明了的图,原处为参考文献中的第二个链接,有兴趣的朋友可以去原文查阅。图中最右侧展示的是时域中的一个信号,这是一个近似于矩形的波,而图的正中间则是组成该信号的各个频率的正弦波。从图中我们可以看出,即使角度几乎为直角的正弦波,其实也是由众多的弧度圆滑的正弦波来组成的。在时域图像中,我们看到的只有一个矩形波,我们无从得知他是由这些正弦波组成。但当我们通过傅里叶变换将该矩形波转换到频域之后,我们能够很清楚的看到许多脉冲,其中频域图中的横轴为频率,纵轴为振幅。因此可以通过这个频域图像得知,时域中的矩形波是由这么多频率的正弦波叠加而成的。

快速傅里叶变换在信号处理中的应用_第1张图片 图1   时域频域关系图

这就是傅里叶变换的最基本最简单的应用,当然这是从数学的角度去看傅立叶变换。在信号分析过程中,傅里叶变换的作用就是将组成这个回波信号的所有输入源在频域中按照频率的大小来表示出来。傅里叶变换之后,信号的幅度谱可表示对应频率的能量,而相位谱可表示对应频率的相位特征。经过傅立叶变换可以在频率中很容易的找出杂乱信号中各频率分量的幅度谱和相位谱,然后根据需求,进行高通或者低通滤波处理,最终得到所需要频率域的回波。

傅里叶变换在图像处理过程中也有非常重要的作用,设信号f是一个能量有限的模拟信号,则其傅里叶变换就表示信号f的频谱。从纯粹的数学意义上看,傅里叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。傅里叶频谱图上我们看到的明暗不一的亮点,其意义是指图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅里叶变换后的频谱图,也叫功率图,我们就可以直观地看出图像的能量分布:如果频谱图中暗的点数更多,那么实际图像是比较柔和的,这是因为各点与邻域差异都不大,梯度相对较小;反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的、边界分明且边界两边像素差异较大的。

下面我们以信号处理过程中的一个例子来详细说明FFT的效果:假设采样频率为Fs,信号频率为F,采样点数为N。那么FFT处理之后的结果就是一个点数为N点的复数。每一个点就对应着一个频率点,而每个点的模值,就是该频率值下的幅度特性。假设原始信号的峰值为A,那么在处理后除第一个点之外的其他点的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即频率为0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn 所能分辨到的最小频率为Fs/N,如果采样频率Fs为1024Hz,采样点数N为1024点,则最小分辨率可以精确到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT处理,则结果可以分析到1Hz;如果采样2秒时间的信号并做FFT处理,则结果可以精确到0.5Hz。

假设现在我们有一个输入信号,该信号总共包含3种成分信号,其一是5V的直流分量;其二是频率为50Hz、相位为-60度、幅度为10V的交流信号;第三个成分信号是频率为100Hz、相位为90度、幅度为5V的交流信号。该输入信号用数学表达式表示如下:

                                            S=5+10*cos(2*pi*50*t-pi*60/180)+5*cos(2*pi*100*t+pi*90/180)

快速傅里叶变换在信号处理中的应用_第2张图片 图2 输入信号

图2即为S信号的图像表示。现在,我们以256Hz的采样率Fs对这个信号进行采样,采样点数N同样为256点。根据公式我们可以算出其频谱图中的频率精度为1Hz。因此对于输入信号频率包含0Hz、50Hz和100hz的复合信号,在其经过FFT处理之后,应该会在频谱图中出现3个峰值,而且频率分别为0Hz、50Hz和100Hz,处理结果如图3所示:

快速傅里叶变换在信号处理中的应用_第3张图片 图3 信号频谱全图

结果正如我们所预料的,对输入信号’S’做FFT处理之后,图3中出现了5个峰值,这是因为对输入信号做256点的FFT处理之后并没有第257个频点信息,这也是前文中所提到的第一个点的模值是N倍的原因。因此,信号的 FFT结果具有一定的对称性。一般情况下,我们只使用前半部分的结果,即小于采样频率一半的结果。对于图像进行简单处理后,我们的前半部分的FFT结果如图4所示:

快速傅里叶变换在信号处理中的应用_第4张图片 图4  处理后的频谱图

从图4中可以看出,三个输入信号频点的幅值依次为1280、1280、640;其他频率所对应的幅值均为0。按照公式,可以计算直流分量(频率为0Hz)的幅值为:1280/N= 1280/256=5;频率为50Hz的交流信号的幅值为:1280/(N/2)= 1280/(256/2)=10;而75Hz的交流信号的幅值为640/(N/2)=640/(256/2)=5。这也正是我们输入信号中的三个分量的直流分量值,由此可见,从频谱分析出来的幅值是正确的。

通过上面的例子我们可以看出,对于一个输入信号,假如我们不能确定该输入信号的频率组成,我们对其进行FFT处理之后,便可以很轻松的看出其频率分量,并且可以通过简单的计算来获知该信号的幅值信息等。另外,如果想要提高频率分辨率,我们根据计算公式首先想到的就是需要增加采样点数,但增加采样点数也就意味着计算量增加,这在工程应用中增加了工程难度。解决这个问题的方法有频率细分法,比较简单的方法是采样较短时间的信号,然后在后面补充一定数量的0,使其长度达到需要的点数(一般为2的幂次方的点数),然后再做FFT,就能在一定程度上提高频率分辨率。

 

参考文献

https://blog.csdn.net/guyuealian/article/details/72817527

https://blog.csdn.net/Best_Coder/article/details/39560287

https://blog.csdn.net/wordwarwordwar/article/details/68951605

https://wenku.baidu.com/view/aa227c1e650e52ea55189866.html

https://wenku.baidu.com/view/c33302126edb6f1aff001f04.html

https://blog.csdn.net/xz_wang/article/details/24926415

https://blog.csdn.net/djzhao/article/details/78333996

https://blog.csdn.net/liuuze5/article/details/40051395

 

 

 

你可能感兴趣的:(On,the,way)