一、离散傅立叶变换
离散傅里叶变换(Discrete Fourier Transform)一词是为适应计算机作傅里叶变换运算而引出的一个专用名词,这是因为,对信号X(L)进行博里叶变换(FT)或逆傅里叶变换(IFT)运算时,无论在时域或在频域都需要进行包括(-∞,+∞)区间的积分运算,若在计算机上实现这一运算,则必须做到:(l)把连续信号(包括时域、频域)改造为离散数据;(2)把计算范围收缩到一个有限区间;(3)实现正、逆博里叶变换运算.在这种条件下所构成的变换对称为离散傅里叶变换对.其特点是,在时域和频域中都只取有限个离散数据,这些数据分别构成周期性的离散时间函数和频率函数.
连续时间信号x(t)经过加窗截断后在区间[0,T]上经过A/D转换离散化,采样间隔Δt按采样频率确定为:
Δt=1/fs
在时间点{0,Δt,2Δt,3Δt,....}进行取样,得到长度为N(N=T/Δt)的时间序列{x(n)}。
经加窗和周期延拓处理后的信号是一个周期信号,其傅立叶积分式为:
<img title="6.5 DFT与FFT" style="BORDER-LEFT-WIDTH: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px" alt="6.5 DFT与FFT" src="http://course.cug.edu.cn/21cn/%E6%9C%BA%E6%A2%B0%E5%B7%A5%E7%A8%8B%E6%B5%8B%E8%AF%95%E6%8A%80%E6%9C%AF/c6/Image57.gif" width="135" height="30">
A/D采样离散化后的计算公式为:
<img title="6.5 DFT与FFT" style="BORDER-LEFT-WIDTH: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px" alt="6.5 DFT与FFT" src="http://course.cug.edu.cn/21cn/%E6%9C%BA%E6%A2%B0%E5%B7%A5%E7%A8%8B%E6%B5%8B%E8%AF%95%E6%8A%80%E6%9C%AF/c6/zz4.gif" width="216" height="50" align="middle">Δt
周期信号的频谱是线谱和离散谱,X(f)只能离散取值,频率取样间隔为:
Δf=fs/N
频率取样点为{0,Δf,2Δf,3Δf,....},有:
<img title="6.5 DFT与FFT" style="BORDER-LEFT-WIDTH: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px" alt="6.5 DFT与FFT" src="http://course.cug.edu.cn/21cn/%E6%9C%BA%E6%A2%B0%E5%B7%A5%E7%A8%8B%E6%B5%8B%E8%AF%95%E6%8A%80%E6%9C%AF/c6/zz5.gif" width="357" height="46" align="middle">Δt k=0,1,2,...N-1
这就是离散傅立叶变换计算公式。为便于计算,写为三角函数形式:
<img title="6.5 DFT与FFT" style="border-width: 0px; list-style-type: none; font-size: 14px; font-family: simsun; color: rgb(73, 73, 73); padding: 0px; margin: 0px; line-height: 21px;" alt="6.5 DFT与FFT" src="http://course.cug.edu.cn/21cn/%E6%9C%BA%E6%A2%B0%E5%B7%A5%E7%A8%8B%E6%B5%8B%E8%AF%95%E6%8A%80%E6%9C%AF/c6/zz6.gif" width="530" height="179">
k=0,1,2......
计算出实部HR(kΔf)和虚部HR(kΔf)后,可按下式转换为信号在kΔf频率点的幅值与相位:
|X(kΔf)|=Sqrt(XR2(kΔf)+XI2(kΔf))
Q(kΔf)=arctg(XI(kΔf)/XR(kΔf))
如不考虑计算效率,用计算机编程是很容易实现的。例如,用Signal VBScript编程计算4Δf频率点的幅值与相位的程序代码为: pi=3.1415926
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) 将k作为变量,就可以计算出信号在整个频带上的频谱。
|