傅里叶变换#
上文已经得出了傅里叶级数的复数形式,即一个周期为 T 的函数 fT(t)可以展开为
f(t)=n=−∞∑∞cneinωt=n=−∞∑∞(T1∫−2T2Tf(t)e−inωtdt)einωt对于这个式子,我们可以将 nω 视作一个整体,也就是说傅里叶级数实际上是在枚举不同频率 ⋯,1ω,2ω,⋯,nω,⋯。可以想象一个数轴,该数轴上的点均为 nω,每个点的值对应一个复数 cn。根据该思想,记 ω0=T2π(这个参数也被称为是基频率),那么傅里叶级数就是在枚举基频率 ⋯,1ω0,2ω0,⋯,nω0,⋯,于是傅里叶级数就可以用基频率表示为
f(t)=n=−∞∑∞cneinω0t=n=−∞∑∞(T1∫−2T2Tf(t)e−inω0tdt)einω0t对于一个非周期函数 f(t),我们能否也将其展开为傅里叶级数呢?答案就是傅里叶变换,我们可以将这个非周期函数 f(t) 视作一个周期为 ∞ 的“周期函数”。当 T→∞ 时,ω0→0,此时对于基频率 ω0 的枚举就从一个离散函数变成了一个连续函数。
记 Δω=(n+1)ω0−nω0=ω0=T2π,ω=nω0 则
f(t)=n=−∞∑∞(T1∫−2T2Tf(t)e−inω0tdt)einω0t=n=−∞∑∞2πΔω∫−2T2Tf(t)e−iωtdt⋅eiωt=2π1∫−∞∞∫−∞∞f(t)e−iωtdt⋅eiωtdω(T→∞,ω0→0)这里可以类比定积分的几何意义(在区间 [a,b] 内取 n−1 个分点 a=x0<x1<⋯<xn=b,记 Δxi=xi−xi−1,ξi∈(xi−1,xi),则 ∫abf(x)dx=limn→∞∑i=1nf(ξi)Δxi),只不过上下限都变成了无穷(不定积分)。
记 F(ω)=∫−∞∞f(t)e−iωtdt,该式就是傅里叶变换,而 f(t)=2π1∫−∞∞F(ω)eiωtdω 就是逆傅里叶变换。
离散傅里叶变换(DFT)#
在实际应用中,我们很难做到对连续函数做傅里叶变换,但是可以对函数进行采样,然后做离散傅里叶变换,公式为
Xk=n=0∑N−1xne−iN2πnk假设我们已知序列 x0,x1,⋯,xN−1 的值,那我们根据离散傅里叶变换公式就能求出对应的 X0,X1,⋯,XN−1 了。这里 N 是所分析函数/信号的长度(采样区间),x0,x1,⋯,xN−1 可以视作是我们对连续信号的离散采样。
同理存在离散傅里叶逆变换
xk=N1n=0∑N−1XneiN2πnk
对于离散傅里叶变换,如果用 N 阶单位根(WN,k=e−iN2πk)代入,则
Xk=n=0∑N−1xnWN,kn
实际上,这就是在求一个多项式 f(t)=x0+x1t+x2t2+⋯+xN−1tN−1 在 N 阶单位根构成的群上的点值表示,这个问题可以用Cooley–Tukey算法等优化至 O(NlogN) 的复杂度,也就是快速傅里叶变换(FFT)。