一、离散傅立叶变换
离散傅里叶变换(Discrete Fourier Transform)一词是为适应计算机作傅里叶变换运算而引出的一个
专用名词,这是因为,对信号X(L)进行博里叶变换(FT)或逆傅里叶变换(IFT)运算时,无论在时域或在
频域都需要进行包括(-∞,+∞)区间的积分运算,若在计算机上实现这一运算,则必须做到:(l)把连
续信号(包括时域、频域)改造为离散数据;(2)把计算范围收缩到一个有限区间;(3)实现正、逆博里
叶变换运算.在这种条件下所构成的变换对称为离散傅里叶变换对.其特点是,在时域和频域中都只取有限
个离散数据,这些数据分别构成周期性的离散时间函数和频率函数.
连续时间信号x(t)经过加窗截断后在区间[0,T]上经过A/D转换离散化,采样间隔Δt按采样频率确定为:
经加窗和周期延拓处理后的信号是一个周期信号,其傅立叶积分式为:
A/D采样离散化后的计算公式为:
这就是离散傅立叶变换计算公式。为便于计算,写为三角函数形式:
Q(kΔf)=arctg(XI(kΔf)/XR(kΔf))
pi=3.1415926将k作为变量,就可以计算出信号在整个频带上的频谱。
k=4
DF=Fs/N
XR=0
XI=0
For i=0 To N-1
XR=XR+x(i)*cos(2*pi*k*i/N)
XI=XI+x(i)*sin(2*pi*k*i/N)
Next
XR=(T/N)*XR
XI=(T/N)*XI
A=sqrt(XR*XR+XI*XI)
Q=atn(XI/XR)
二、 快速傅立叶变换(FFT)
快速傅立叶变换(FFT)是实施离散傅立叶变换的一种及其迅速而有效的算法。FFT算法通过仔细选择和重新排列中间结果,在速度上较之离散傅立叶变换有明显的优点。忽略数学计算中精度的影响时,无论采用的是FFT还是DFT,结果都一样。
如果直接应用上式计算离散傅立叶变换,将花费很多时间,因此很长的一段时间里DFT的使用受到了限制。直到1965年美国的J.W.Cooley和J.W.Turkey提出了一种离散的傅立叶变换的快速算法,即FFT(Fast Fourier Transformation),才使得DFT的计算工作量大为减少。
为简化表达,且不失一般性,将离散傅立叶变换公式简写成
X(k+N)=X(k)
表明X(k)是以N为周期的序列和频谱。
若令旋转因子,则上式又可写成
用矩阵表示可写成
或
由于是复数,x(n)也可能是复数形式,这样,要完成上面矩阵运算共需N2次复数乘法和N(N-1)复数加法。可见,计算量与N2成正比,随着的增加,总运算次数将会急剧增加。
设N=2B,于是可将[W]分解成B个矩阵的连乘,即
其中每个矩阵的各行元素都包含有两个非零项。例如,对于N=64的情况有:
注意这里利用了关系,,因此W4=W0,W6=W2,将[W]分解成
由于上式在分解时充分利用了旋转因子具有周期性及合理分解的特点,从而使总的计算次数从N2量级减少到Nlog2N量级,极大地提高了运算速度,故形成了快速傅立叶变换。
最常见的FFT算法要求N是2的幂次。假定信号分析仪中的采样点数为1024点,DFT要求一百万次以上的计算工作量,而FFT则只要求10240次计算。显然,FFT可大大节约计算量,故在信号处理中中广泛采用FFT算法。目前FFT算法已有专用硬件芯片和软件模块,使用中直接选用就可以了。
三、FFT算法的应用
1. 信号的谐波分析
用FFT计算信号频谱的过程是,将采样信号
经FFT变换转换到频域:
Q(k)=arctg(XI(k)/XR(k))
2.快速卷积运算
同样,依据连续傅里叶交换的时域卷积定理有,两个周期为N的时域采样函数,它们的卷积的离散傅里叶变换等于它们的离散傅里叶交换的乘积,即
需要注意的是,实现快速卷积算法中,由于利用了DFT分析,即时域和频域都是周期性离散数据,当对它们作周期卷积(或称圆卷积)运算时,将出现一种周期数据之间的迭代求和的现象,这给计算结果带来一种所谓环绕误差.避免环绕误差的方法是对x(n)与h(n)分别在尾部填补零值点,即使其周期加倍.如果x(n)与h(n)长度相等,则都加长N点。
快速卷积过程可按如下步骤进行:
此即为所求的 x(n)与h(n) 的卷积。
与快速卷积计算的方法相类似,也可以利用FFT作快速的相关运算。