12.离散傅里叶变换(DFT) [学习笔记]

不同于网上的直接推导离散傅里叶变换的方法,本文将从连续傅里叶出发,用采样近似的方法来推导出离散傅里叶变换

推导的思路是:

  1. 先对连续函数f进行离散化操作,即采样,得到离散的点fsampled
  2. 然后对其傅里叶变换F(fsampled)进行采样,得到(F(fsampled))sampled
  3. 最后,再将连续傅里叶变换本身F也转换为对应的离散形式Fsampled

总的来说,离散傅里叶变换(DFT)就是用离散的点来近似得到fFf以及F


第一步

首先需要说明的一点是:在连续傅里叶变换中,一个信号不能同时在时域、频域都受到限制。
举一个简单的例子,如果时域中的信号是矩形函数,即被限制在某一范围内,其他点的值均为0,那么它的傅里叶变换就是sinc函数,即在频域中是不受限的。反之亦然。

但是作为离散傅里叶变换,我们希望探究的问题无论在频域还是在时域内都是有限的(根据采样而定)。为了导出有限值,我们不妨先假定研究的函数在时域、频域内都受限。

f(t)在时域内受限,0tL
对应的Ff(s)在频域内受限,0s2B,其中B为带宽(注意为了方便计算,我们将区间从BsB平移了)

根据上一章的内容可知,以两倍带宽作为采样频率可以保留完整的信息,因此我们不妨把采样频率设为2B,相当于我们在时域上每隔12B的距离取一个点,如下图

12.离散傅里叶变换(DFT) [学习笔记]

于是,在时域中的采样点个数就是N=L12B=2BL,每个采样点在时域中的横坐标就应为:t0=0,t1=12B,,tN1=N12B,对f(t)进行采样,采样位置为t0,t1,,tN1,可以得到fsampled(t)

fsampled(t)=f(t)δ(tt0)+f(t)δ(tt1)++f(t)δ(ttN1)=k=0N1f(t)δ(ttk)(1)=k=0N1f(tk)δ(ttk)


第二步

(1)式进行连续傅里叶变换,注意(1)式中变量是(t),故f(tk)实际上是一个常量

Ffsampled(s)=k=0N1f(tk)F(δ(ttk))=k=0N1f(tk)e2πistk

用与第一步类似的方法,与2B类似,我们将L定为在时间上的一个限制,于是,根据频率与时间的倒数关系,我们可以在频域内对函数进行采样,采样间隔为1L。如下图:

12.离散傅里叶变换(DFT) [学习笔记]

于是,在频域中的采样点个数就是M=2B1L=2BL,我们发现M=N,因此,每个采样点在频域中的横坐标就应为:s0=0,s1=1L,,sN1=N1L,对Ff(s)进行采样,采样位置为s0,s1,,sN1,可以得到(Ffsampled)sampled(s)

(Ffsampled)sampled(s)=k=0N1f(tk)e2πistkm=0N1δ(ssm)=m=0N1k=0N1f(tk)e2πismtkδ(ssm)

清楚起见,我们将上式左边部分记为F(s),则

(2)F(sm)=k=0N1f(tk)e2πismtk


到此为止,我们已经在某种程度上得到了DFT,但是tksm其实是连续图像中截取的点,因此为了彻底消除连续性,我们进行以下操作:

根据前文采样时下的定义,可知tk=k2Bsm=mL,于是我们就可以将(2)式改写为

F(sm)=k=0N1f(tk)e2πismtk=k=0N1f(tk)e2πimk2BL=k=0N1f(tk)e2πimkN

至此,所有连续性消除,而上式括号中的原变量tksm其实也已经变成了变量km


最后,我们写出DFT的完整表达:

为了区别于连续值,我们以下划线的形式记录离散值

假设f_为一组离散的信号:

f_=(f_[0],f_[1],,f_[N1])

则该信号经DFT后:

F_=(F_[0],F_[1],,F_[N1])

其中,DFT的表达式为:

F_[m]=k=0N1f_[k]e2πimkN


注意到在推导过程中,Δt=LNΔs=2BN,故ΔtΔs=2BLN2=1N,这说明了ΔtΔs存在着倒数关系,且在我们设置采样参数时,只要确定了Δt,Δs,N中两个,另一个就被确定了。

同时我们发现时域、频域的间隔关系中有一个系数N,这个系数在下一章会出现在离散傅里叶逆变换中