不同于网上的直接推导离散傅里叶变换的方法,本文将从连续傅里叶出发,用采样近似的方法来推导出离散傅里叶变换
推导的思路是:
- 先对连续函数
f
进行离散化操作,即采样,得到离散的点
fsampled
。
- 然后对其傅里叶变换
F(fsampled)
进行采样,得到
(F(fsampled))sampled
- 最后,再将连续傅里叶变换本身
F
也转换为对应的离散形式
Fsampled
总的来说,离散傅里叶变换(DFT)就是用离散的点来近似得到
f
,
Ff
以及
F
第一步
首先需要说明的一点是:在连续傅里叶变换中,一个信号不能同时在时域、频域都受到限制。
举一个简单的例子,如果时域中的信号是矩形函数,即被限制在某一范围内,其他点的值均为
0
,那么它的傅里叶变换就是
sinc
函数,即在频域中是不受限的。反之亦然。
但是作为离散傅里叶变换,我们希望探究的问题无论在频域还是在时域内都是有限的(根据采样而定)。为了导出有限值,我们不妨先假定研究的函数在时域、频域内都受限。
设
f(t)
在时域内受限,
0≤t≤L
对应的
Ff(s)
在频域内受限,
0≤s≤2B
,其中
B
为带宽(注意为了方便计算,我们将区间从
−B≤s≤B
平移了)
根据上一章的内容可知,以两倍带宽作为采样频率可以保留完整的信息,因此我们不妨把采样频率设为
2B
,相当于我们在时域上每隔
12B
的距离取一个点,如下图
于是,在时域中的采样点个数就是
N=L12B=2BL
,每个采样点在时域中的横坐标就应为:
t0=0,t1=12B,…,tN−1=N−12B
,对
f(t)
进行采样,采样位置为
t0,t1,…,tN−1
,可以得到
fsampled(t)
:
fsampled(t)=f(t)δ(t−t0)+f(t)δ(t−t1)+⋯+f(t)δ(t−tN−1)=∑k=0N−1f(t)δ(t−tk)=∑k=0N−1f(tk)δ(t−tk)(1)
第二步
对
(1)
式进行连续傅里叶变换,注意
(1)
式中变量是
(t)
,故
f(tk)
实际上是一个常量
Ffsampled(s)=∑k=0N−1f(tk)F(δ(t−tk))=∑k=0N−1f(tk)e−2πistk
用与第一步类似的方法,与
2B
类似,我们将
L
定为在时间上的一个限制,于是,根据频率与时间的倒数关系,我们可以在频域内对函数进行采样,采样间隔为
1L
。如下图:
于是,在频域中的采样点个数就是
M=2B1L=2BL
,我们发现
M=N
,因此,每个采样点在频域中的横坐标就应为:
s0=0,s1=1L,…,sN−1=N−1L
,对
Ff(s)
进行采样,采样位置为
s0,s1,…,sN−1
,可以得到
(Ffsampled)sampled(s)
:
(Ffsampled)sampled(s)=∑k=0N−1f(tk)e−2πistk∑m=0N−1δ(s−sm)=∑m=0N−1∑k=0N−1f(tk)e−2πismtkδ(s−sm)
清楚起见,我们将上式左边部分记为
F(s)
,则
F(sm)=∑k=0N−1f(tk)e−2πismtk(2)
到此为止,我们已经在某种程度上得到了DFT,但是
tk
和
sm
其实是连续图像中截取的点,因此为了彻底消除连续性,我们进行以下操作:
根据前文采样时下的定义,可知
tk=k2B
,
sm=mL
,于是我们就可以将
(2)
式改写为
F(sm)=∑k=0N−1f(tk)e−2πismtk=∑k=0N−1f(tk)e−2πimk2BL=∑k=0N−1f(tk)e−2πimkN
至此,所有连续性消除,而上式括号中的原变量
tk
,
sm
其实也已经变成了变量
k
,
m
最后,我们写出DFT的完整表达:
为了区别于连续值,我们以下划线的形式记录离散值
假设
f––
为一组离散的信号:
f––=(f––[0],f––[1],…,f––[N−1])
则该信号经DFT后:
F––=(F––[0],F––[1],…,F––[N−1])
其中,DFT的表达式为:
F––[m]=∑k=0N−1f––[k]e−2πimkN
注意到在推导过程中,
Δt=LN
,
Δs=2BN
,故
ΔtΔs=2BLN2=1N
,这说明了
Δt
与
Δs
存在着倒数关系,且在我们设置采样参数时,只要确定了
Δt,Δs,N
中两个,另一个就被确定了。
同时我们发现时域、频域的间隔关系中有一个系数
N
,这个系数在下一章会出现在离散傅里叶逆变换中