> 文章列表 > 关于DTFT、DFT和FFT的理解

关于DTFT、DFT和FFT的理解

关于DTFT、DFT和FFT的理解

首先,时域信号可以看做是一个离散时间序列 x[n]x[n]x[n],其中 nnn 是时间点。在进行傅里叶变换时,我们将 x[n]x[n]x[n] 看做一个周期为 NNN 的信号,周期长度为 NNN,但实际上DFT和FFT计算时并不满足周期性,输出序列是 X[k]X[k]X[k],其中 kkk 是离散频率点,由于DFT和FFT的输出长度是固定的,因此在 NNN 内对 X[k]X[k]X[k] 进行周期采样,采样周期为 2π/N2\\pi / N2π/N

具体来说,DTFT 的定义为:

X(ejω)=∑n=−∞∞x[n]e−jωnX(e^{j\\omega}) = \\sum_{n=-\\infty}^{\\infty} x[n] e^{-j\\omega n}X(e)=n=x[n]ejωn

其中,X(ejω)X(e^{j\\omega})X(e) 是信号的频谱。DTFT 中,ω\\omegaω 是一个连续变量, X(ejω)X(e^{j\\omega})X(e) 是频域信号在 ω\\omegaω 处的幅值和相位。但在DFT中,kkk 是一个离散变量,DFT 的表达式为:

X[k]=∑n=0N−1x[n]e−j2πnk/NX[k] = \\sum_{n=0}^{N-1} x[n] e^{-j2\\pi nk/N}X[k]=n=0N1x[n]ej2πnk/N

DFT 中的 kkk 代表了离散频率,与DTFT中的 ω\\omegaω 相对应。注意,DFT中nnn 的范围是 0≤n≤N−10 \\leq n \\leq N - 10nN1,而非 −∞≤n≤∞-\\infty \\leq n \\leq \\inftyn,并且, DFT 中的 ω\\omegaω 只有在 0002π2\\pi2π 之间才有物理意义,故 kkk 的取值范围是 0≤k≤N−10 \\leq k \\leq N - 10kN1,所以DFT 离散化了 DTFT 中的频域信息。

DFT 系数表示了离散时间信号在离散频域下的表现,其中 kkk代表频率下标,表示 kΔf=kNfsk\\Delta f = \\frac{k}{N}f_skΔf=Nkfs 的频率成分。 Δf=fsN\\Delta f = \\frac{f_s}{N}Δf=Nfs 表示频率分辨率,fsf_sfs是采样率。

FFT与DFT是等价的,只是计算次数不同,由于计算次数更少,FFT运行更快。对于一个长度为 NNN 的复合序列 x(n)x(n)x(n) 应用DFT 或FFT时,输出的序列也是长度为 NNN 的,具体表示式可以写为:

X[k]=∑n=0N−1x[n]e−j2πnk/NX[k] = \\sum_{n = 0}^{N-1} x[n] e^{-j2\\pi nk/N}X[k]=n=0N1x[n]ej2πnk/N

其中 kkk 表示输出序列中的下标,X[k]X[k]X[k] 是DFT或FFT输出的第 kkk 个复数点。

总结一下,DTFT、DFT和FFT都是进行时域与频域变换的方法,它们的区别在于计算时的性质和复杂度。DTFT输出一个连续的频域信号,DFT抽样后输出一个离散的频域信号;FFT在DFT的基础上进行优化,运算速度更快。需要注意的是,输出的频域序列长度是固定的,在DFT和FFT中,输出序列的长度通常为 NNN,但输入序列的长度可以任意。