DFT的笔记
连续函数傅立叶变换和傅立叶级数
傅立叶级数
在满足一定条件的情况下,周期为 T T T的函数可以表示为三角函数张成的空间里的向量,表示为
f ( t ) = ∑ n = − ∞ ∞ c n e i 2 π n T t f(t)=\sum_{n=-\infin}^{\infin}c_ne^{i\frac{2\pi n}{T}t} f(t)=n=−∞∑∞cneiT2πnt
其中,基函数是正交的,那么,系数可以用 f ( t ) f(t) f(t)与 e − i 2 π n T t e^{-i\frac{2\pi n}{T}t} e−iT2πnt的内积得到,内积是定义在一个周期上的积分除以周期。
系数为 c n = 1 T ∫ − T / 2 T / 2 f ( t ) e − i 2 π n T t d t c_n=\frac{1}{T} \int_{-T/2}^{T/2}f(t)e^{-i\frac{2\pi n}{T}t}dt cn=T1∫−T/2T/2f(t)e−iT2πntdt
c n c_n cn的值相当于频率为 2 π n T \frac{2\pi n}{T} T2πn的三角函数的强度。
傅立叶变换
傅立叶级数适用于周期函数,而对于非周期函数来说,是无法适用的,不过如果将周期视为无穷大,可由傅立叶级数推导出傅立叶变换,推导过程比较复杂,这里给出形式。
F ( μ ) = ∫ − ∞ ∞ f ( t ) e − i 2 π μ t d t F(\mu)=\int_{-\infin}^{\infin}f(t)e^{-i2\pi\mu t}dt F(μ)=∫−∞∞f(t)e−i2πμtdt
f ( t ) = ∫ − ∞ ∞ F ( μ ) e i 2 π μ t d μ f(t)=\int_{-\infin}^{\infin}F(\mu)e^{i2\pi\mu t}d\mu f(t)=∫−∞∞F(μ)ei2πμtdμ
前者就是函数的频谱,相当于傅立叶级数中的 c n c_n cn,只不过是连续的。
带限函数采样的傅立叶变换
考虑一个带限连续函数经采样后的傅立叶变换。
设原函数 f ( t ) f(t) f(t),傅立叶变换为 F ( μ ) F(\mu) F(μ),采样周期为 Δ T \Delta T ΔT,冲击串为 s Δ T ( t ) s_{\Delta T}(t) sΔT(t),傅立叶变换为 S Δ T ( μ ) S_{\Delta T}(\mu) SΔT(μ)
采样后的函数为:
f ( t ) ∑ k δ ( t − k Δ T ) = f ( t ) s Δ T ( t ) f(t)\sum_k \delta(t-k\Delta T)=f(t)s_{\Delta T}(t) f(t)∑kδ(t−kΔT)=f(t)sΔT(t)
其傅立叶变换为:
F ( μ ) ⊗ S Δ T ( μ ) = ∫ − ∞ ∞ F ( m ) S ( μ − m ) d m = 1 Δ T ∫ − ∞ ∞ F ( m ) ∑ k δ ( μ − m − k / Δ T ) d m = 1 Δ T ∑ k ∫ − ∞ ∞ F ( m ) δ ( μ − m − k / Δ T ) d m = 1 Δ T ∑ k F ( μ − k / Δ T ) \begin{aligned}F(\mu)\otimes S_{\Delta T}(\mu)&=\int_{-\infin}^{\infin}F(m)S(\mu-m)dm\\ &=\frac{1}{\Delta T}\int_{-\infin}^{\infin}F(m)\sum_k \delta(\mu-m-k/\Delta T)dm\\ &=\frac{1}{\Delta T}\sum_k\int_{-\infin}^{\infin}F(m)\delta(\mu-m-k/\Delta T)dm \\ &=\frac{1}{\Delta T}\sum_kF(\mu-k/\Delta T)\end{aligned} F(μ)⊗SΔT(μ)=∫−∞∞F(m)S(μ−m)dm=ΔT1∫−∞∞F(m)k∑δ(μ−m−k/ΔT)dm=ΔT1k∑∫−∞∞F(m)δ(μ−m−k/ΔT)dm=ΔT1k∑F(μ−k/ΔT)
这说明,采样后的函数傅立叶变换是其傅立叶变换以 1 / Δ T 1/\Delta T 1/ΔT为周期的延拓。
当然,具体形式也可以求得:
∫ − ∞ ∞ ∑ k f ( t ) δ ( t − k Δ T ) e − i 2 π μ t d t = ∑ k ∫ − ∞ ∞ f ( t ) δ ( t − k Δ T ) e − i 2 π μ t d t = ∑ k f ( k Δ T ) e − i 2 π μ k Δ T \begin{aligned}\int_{-\infin}^{\infin}\sum_k f(t)\delta(t-k\Delta T)e^{-i2\pi\mu t}dt&=\sum_k \int_{-\infin}^{\infin} f(t)\delta(t-k\Delta T)e^{-i2\pi\mu t}dt\\&=\sum_kf(k\Delta T)e^{-i2\pi\mu k\Delta T}\end{aligned} ∫−∞∞k∑f(t)δ(t−kΔT)e−i2πμtdt=k∑∫−∞∞f(t)δ(t−kΔT)e−i2πμtdt=k∑f(kΔT)e−i2πμkΔT
虽然 f ( k Δ T ) f(k\Delta T) f(kΔT)是离散的,但关于频率 μ \mu μ,这是一个连续函数,也是周期的。
离散傅立叶变换
表征采样后傅立叶变换在一个周期的值就可以得到完整的信息,在实际中这一个周期的值也是连续的,想表征这个周期的值,同样要对这个频域的周期进行采样。
取0到 1 / Δ T 1/\Delta T 1/ΔT这个周期,等间距采样M个样本,那么我们的采样值可以表示为 m M Δ T \dfrac{m}{M\Delta T} MΔTm
那么,采样得到的值为
∑ k f ( k Δ T ) e − i 2 π ( m M Δ T k Δ T ) = ∑ k f ( k Δ T ) e − i 2 π m k / M \sum_k f(k\Delta T)e^{-i2\pi (\frac{m}{M\Delta T}k\Delta T)}=\sum_k f(k\Delta T)e^{-i2\pi mk/M} k∑f(kΔT)e−i2π(MΔTmkΔT)=k∑f(kΔT)e−i2πmk/M
这就是离散傅立叶变换,通常, f f f的样本数是有限的也为M个,这样离散傅立叶变换表示为:
F m = ∑ k = 0 M − 1 f k e − i 2 π m k / M F_m=\sum_{k=0}^{M-1}f_ke^{-i2\pi mk/M} Fm=k=0∑M−1fke−i2πmk/M
离散傅立叶反变换为:
f k = 1 M ∑ m = 0 M − 1 F m e i 2 π m k / M f_k=\frac{1}{M}\sum_{m=0}^{M-1}F_me^{i2\pi mk/M} fk=M1m=0∑M−1Fmei2πmk/M
这两个式子不明确依赖 Δ T \Delta T ΔT,适用于所有均匀采样。
由此可知,DFT输入为一个M个数据的序列,输出也为一个M个数据的序列,既然变换过程不依赖于采样频率,那怎么表示输入输出的单位呢?实际上,输入的点的横坐标就是 k Δ T k\Delta T kΔT,输出点的横坐标就是 m / Δ T m/\Delta T m/ΔT,只需要记得我们的采样频率,就可以给输入输出做出标定。