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

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

推导的思路是:

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

总的来说,离散傅里叶变换(DFT)就是用离散的点来近似得到 f f f F f \mathscr{F}f Ff 以及 F \mathscr{F} F


第一步

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

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

f ( t ) f(t) f(t) 在时域内受限, 0 ≤ t ≤ L 0 \leq t \leq L 0tL
对应的 F f ( s ) \mathscr{F}f (s) Ff(s) 在频域内受限, 0 ≤ s ≤ 2 B 0 \leq s \leq 2B 0s2B,其中 B B B 为带宽(注意为了方便计算,我们将区间从 − B ≤ s ≤ B -B \leq s \leq B BsB 平移了)

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

[EE261学习笔记] 12.离散傅里叶变换(DFT)_第1张图片

于是,在时域中的采样点个数就是 N = L 1 2 B = 2 B L N = \frac{L}{\frac{1}{2B}}=2BL N=2B1L=2BL,每个采样点在时域中的横坐标就应为: t 0 = 0 , t 1 = 1 2 B , … , t N − 1 = N − 1 2 B t_0 = 0, t_1 = \frac{1}{2B}, \dots , t_{N-1} = \frac{N-1}{2B} t0=0,t1=2B1,,tN1=2BN1,对 f ( t ) f(t) f(t)进行采样,采样位置为 t 0 , t 1 , … , t N − 1 t_0, t_1, \dots, t_{N-1} t0,t1,,tN1,可以得到 f sampled ( t ) f_\text{sampled}(t) fsampled(t)

f sampled ( t ) = f ( t ) δ ( t − t 0 ) + f ( t ) δ ( t − t 1 ) + ⋯ + f ( t ) δ ( t − t N − 1 ) = ∑ k = 0 N − 1 f ( t ) δ ( t − t k ) = ∑ k = 0 N − 1 f ( t k ) δ ( t − t k ) (1) \begin{aligned} f_\text{sampled}(t) &= f(t)\delta(t-t_0) + f(t)\delta(t-t_1) + \dots + f(t)\delta(t-t_{N-1})\\ &=\sum_{k=0}^{N-1}f(t)\delta(t-t_k)\\ &=\sum_{k=0}^{N-1}f(t_k)\delta(t-t_k)\tag1 \end{aligned} fsampled(t)=f(t)δ(tt0)+f(t)δ(tt1)++f(t)δ(ttN1)=k=0N1f(t)δ(ttk)=k=0N1f(tk)δ(ttk)(1)


第二步

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

F f sampled ( s ) = ∑ k = 0 N − 1 f ( t k ) F ( δ ( t − t k ) ) = ∑ k = 0 N − 1 f ( t k ) e − 2 π i s t k \begin{aligned} \mathscr{F}f_\text{sampled} (s) &= \sum_{k=0}^{N-1}f(t_k) \mathscr{F} \left(\delta(t-t_k) \right)\\ &=\sum_{k=0}^{N-1} f(t_k) e^{-2\pi ist_k} \end{aligned} Ffsampled(s)=k=0N1f(tk)F(δ(ttk))=k=0N1f(tk)e2πistk

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

[EE261学习笔记] 12.离散傅里叶变换(DFT)_第2张图片

于是,在频域中的采样点个数就是 M = 2 B 1 L = 2 B L M = \frac{2B}{\frac{1}{L}}=2BL M=L12B=2BL,我们发现 M = N M=N M=N,因此,每个采样点在频域中的横坐标就应为: s 0 = 0 , s 1 = 1 L , … , s N − 1 = N − 1 L s_0 = 0, s_1 = \frac{1}{L}, \dots , s_{N-1} = \frac{N-1}{L} s0=0,s1=L1,,sN1=LN1,对 F f ( s ) \mathscr{F}f(s) Ff(s) 进行采样,采样位置为 s 0 , s 1 , … , s N − 1 s_0, s_1, \dots, s_{N-1} s0,s1,,sN1,可以得到 ( F f sampled ) sampled ( s ) (\mathscr{F}f_\text{sampled})_\text{sampled}(s) (Ffsampled)sampled(s)

( F f sampled ) sampled ( s ) = ∑ k = 0 N − 1 f ( t k ) e − 2 π i s t k ∑ m = 0 N − 1 δ ( s − s m ) = ∑ m = 0 N − 1 ∑ k = 0 N − 1 f ( t k ) e − 2 π i s m t k δ ( s − s m ) \begin{aligned} (\mathscr{F}f_\text{sampled})_\text{sampled}(s) &= \sum_{k=0}^{N-1} f(t_k) e^{-2\pi ist_k} \sum_{m=0}^{N-1} \delta(s-s_m)\\ & = \sum_{m=0}^{N-1} \sum_{k=0}^{N-1} f(t_k) e^{-2\pi is_m t_k} \delta(s-s_m) \end{aligned} (Ffsampled)sampled(s)=k=0N1f(tk)e2πistkm=0N1δ(ssm)=m=0N1k=0N1f(tk)e2πismtkδ(ssm)

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

F ( s m ) = ∑ k = 0 N − 1 f ( t k ) e − 2 π i s m t k (2) F(s_m) = \sum_{k=0}^{N-1} f(t_k) e^{-2\pi is_mt_k}\tag2 F(sm)=k=0N1f(tk)e2πismtk(2)


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

根据前文采样时下的定义,可知 t k = k 2 B t_k = \frac{k}{2B} tk=2Bk s m = m L s_m = \frac{m}{L} sm=Lm,于是我们就可以将 ( 2 ) (2) (2) 式改写为

F ( s m ) = ∑ k = 0 N − 1 f ( t k ) e − 2 π i s m t k = ∑ k = 0 N − 1 f ( t k ) e − 2 π i m k 2 B L = ∑ k = 0 N − 1 f ( t k ) e − 2 π i m k N \begin{aligned} F(s_m) &= \sum_{k=0}^{N-1} f(t_k) e^{-2\pi is_mt_k}\\ &=\sum_{k=0}^{N-1} f(t_k) e^{-2\pi i\frac{mk}{2BL}}\\ &=\sum_{k=0}^{N-1} f(t_k) e^{-2\pi i\frac{mk}{N}} \end{aligned} F(sm)=k=0N1f(tk)e2πismtk=k=0N1f(tk)e2πi2BLmk=k=0N1f(tk)e2πiNmk

至此,所有连续性消除,而上式括号中的原变量 t k t_k tk s m s_m sm 其实也已经变成了变量 k k k m m m


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

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

假设 f ‾ \underline{f} f为一组离散的信号:

f ‾ = ( f ‾ [ 0 ] , f ‾ [ 1 ] , … , f ‾ [ N − 1 ] ) \underline{f} = \left( \underline{f}[0], \underline{f}[1], \dots, \underline{f}[N-1] \right) f=(f[0],f[1],,f[N1])

则该信号经DFT后:

F ‾ = ( F ‾ [ 0 ] , F ‾ [ 1 ] , … , F ‾ [ N − 1 ] ) \underline{F} = \left( \underline{F}[0], \underline{F}[1], \dots, \underline{F}[N-1] \right) F=(F[0],F[1],,F[N1])

其中,DFT的表达式为:

F ‾ [ m ] = ∑ k = 0 N − 1 f ‾ [ k ] e − 2 π i m k N \underline{F}[m] = \sum_{k=0}^{N-1} \underline{f}[k]e^{-2\pi i\frac{mk}{N}} F[m]=k=0N1f[k]e2πiNmk


注意到在推导过程中, Δ t = L N \Delta t = \frac{L}{N} Δt=NL Δ s = 2 B N \Delta s = \frac{2B}{N} Δs=N2B,故 Δ t Δ s = 2 B L N 2 = 1 N \Delta t \Delta s= \frac{2BL}{N^2} = \frac{1}{N} ΔtΔs=N22BL=N1,这说明了 Δ t \Delta t Δt Δ s \Delta s Δs 存在着倒数关系,且在我们设置采样参数时,只要确定了 Δ t , Δ s , N \Delta t, \Delta s, N Δt,Δs,N 中两个,另一个就被确定了。

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

你可能感兴趣的:(学习笔记-傅里叶变换)