从傅里叶级数到傅里叶变换:详细的数学推导

本文部分公式很长,整体排版对移动端不太友好,建议在 PC 端或者宽屏设备上阅读。

傅里叶变换(Fourier transform)是信号处理中一个重要的概念。傅里叶变换将时间(例如音频)/ 空间域(例如图像)转换到频率域,方便很多后续的信号处理。本文从周期函数的傅里叶级数开始,详细推导傅里叶级数的复数表示,以及非周期函数的傅里叶变换,希望能帮助大家理解傅里叶变换的原理。

正交函数系

对于两个实值函数 f ( x ) f(x) f(x) 和 g ( x ) g(x) g(x),定义函数的内积为:

⟨ f , g ⟩ = ∫ a b f ( x ) g ( x )   d x \langle f, g \rangle = \int_a^b f(x)g(x)\,dx ⟨f,g⟩=∫abf(x)g(x)dx

如果

⟨ f , g ⟩ = 0 \langle f, g \rangle = 0 ⟨f,g⟩=0

则称 f f f 和 g g g 正交。函数正交是向量正交的一个扩展,函数正交中的"乘积后求积分"对应向量内积的"乘积后求和"。

假设有函数的集合 { ϕ n ( x ) } \{\phi_n(x)\} {ϕn(x)},其中对于任意 m ≠ n m \neq n m=n 有:

∫ a b ϕ m ( x ) ϕ n ( x )   d x = 0 \int_a^b \phi_m(x)\phi_n(x)\,dx = 0 ∫abϕm(x)ϕn(x)dx=0

则称该函数集合为"正交函数系"(orthogonal functions)。

三角函数集合

1 , cos ⁡ x , sin ⁡ x , cos ⁡ 2 x , sin ⁡ 2 x , ⋯ 1,\ \cos x,\ \sin x,\ \cos 2x,\ \sin 2x,\ \cdots 1, cosx, sinx, cos2x, sin2x, ⋯

是正交函数系。以区间 − π , π -\\pi,\\pi −π,π 为例:

对于任意的 m , n m,n m,n,当 m ≠ n m \neq n m=n 时:

∫ − π π cos ⁡ ( m x ) cos ⁡ ( n x )   d x = 0 \int_{-\pi}^{\pi}\cos(mx)\cos(nx)\,dx = 0 ∫−ππcos(mx)cos(nx)dx=0

对于任意的 m , n m,n m,n,当 m ≠ n m \neq n m=n 时:

∫ − π π sin ⁡ ( m x ) sin ⁡ ( n x )   d x = 0 \int_{-\pi}^{\pi}\sin(mx)\sin(nx)\,dx = 0 ∫−ππsin(mx)sin(nx)dx=0

并且:

∫ − π π sin ⁡ ( m x ) cos ⁡ ( n x )   d x = 0 \int_{-\pi}^{\pi}\sin(mx)\cos(nx)\,dx = 0 ∫−ππsin(mx)cos(nx)dx=0

周期函数的傅里叶级数展开

周期函数是指满足

f ( x + T ) = f ( x ) f(x+T)=f(x) f(x+T)=f(x)

的函数,其中常数 T T T 称为周期。任意一个周期为 T T T 的函数 f ( x ) f(x) f(x) 都可以展开为不同频率的余弦函数的线性组合:

f ( x ) = A 0 + ∑ n = 1 ∞ A n cos ⁡ ( n ω 0 x + φ n ) f(x)=A_0+\sum_{n=1}^{\infty}A_n\cos(n\omega_0 x+\varphi_n) f(x)=A0+n=1∑∞Ancos(nω0x+φn)

式中 ω 0 = 2 π T \omega_0=\dfrac{2\pi}{T} ω0=T2π 称为基频率。

公式也可以写为正弦形式:

f ( x ) = A 0 + ∑ n = 1 ∞ A n sin ⁡ ( n ω 0 x + φ n ) f(x)=A_0+\sum_{n=1}^{\infty}A_n\sin(n\omega_0 x+\varphi_n) f(x)=A0+n=1∑∞Ansin(nω0x+φn)

同时也可以写成正弦余弦组合的形式:

f ( x ) = a 0 + ∑ n = 1 ∞ a n cos ⁡ ( n ω 0 x ) + b n sin ⁡ ( n ω 0 x ) f(x)=a_0+\sum_{n=1}^{\infty}\lefta_n\\cos(n\\omega_0 x)+b_n\\sin(n\\omega_0 x)\\right f(x)=a0+n=1∑∞ancos(nω0x)+bnsin(nω0x)

A n = a n 2 + b n 2 A_n=\sqrt{a_n^2+b_n^2} An=an2+bn2

φ n = arctan ⁡  ⁣ ( − b n a n ) \varphi_n=\arctan\!\left(-\frac{b_n}{a_n}\right) φn=arctan(−anbn)

式子可以简写成:

f ( x ) = a 0 + ∑ n = 1 ∞ A n cos ⁡ ( n ω 0 x + φ n ) f(x)=a_0+\sum_{n=1}^{\infty}A_n\cos(n\omega_0 x+\varphi_n) f(x)=a0+n=1∑∞Ancos(nω0x+φn)

式中的系数 a 0 , a n , b n a_0,a_n,b_n a0,an,bn 可以通过积分求得。

下面推导 a 0 , a n , b n a_0,a_n,b_n a0,an,bn。

对于 a 0 a_0 a0,对上式两边在一个周期区间 − T 2 , T 2 \left-\\dfrac{T}{2},\\dfrac{T}{2}\\right −2T,2T 求积分:

∫ − T / 2 T / 2 f ( x )   d x = ∫ − T / 2 T / 2 a 0 + ∑ n = 1 ∞ ( a n cos ⁡ ( n ω 0 x ) + b n sin ⁡ ( n ω 0 x ) ) d x \int_{-T/2}^{T/2}f(x)\,dx=\int_{-T/2}^{T/2} \left a_0+\\sum_{n=1}\^{\\infty}\\bigl(a_n\\cos(n\\omega_0x)+b_n\\sin(n\\omega_0x)\\bigr) \\rightdx ∫−T/2T/2f(x)dx=∫−T/2T/2a0+n=1∑∞(ancos(nω0x)+bnsin(nω0x))dx

由正交性得:

a 0 = 1 T ∫ − T / 2 T / 2 f ( x )   d x a_0=\frac{1}{T}\int_{-T/2}^{T/2}f(x)\,dx a0=T1∫−T/2T/2f(x)dx

对于 a n a_n an,对上式两边乘以 cos ⁡ ( m ω 0 x ) \cos(m\omega_0x) cos(mω0x),然后再在 − T 2 , T 2 \left-\\dfrac{T}{2},\\dfrac{T}{2}\\right −2T,2T 区间求积分:

∫ − T / 2 T / 2 f ( x ) cos ⁡ ( m ω 0 x )   d x = ∫ − T / 2 T / 2 a 0 + ∑ n = 1 ∞ ( a n cos ⁡ ( n ω 0 x ) + b n sin ⁡ ( n ω 0 x ) ) cos ⁡ ( m ω 0 x )   d x \int_{-T/2}^{T/2}f(x)\cos(m\omega_0x)\,dx=\int_{-T/2}^{T/2} \left a_0+\\sum_{n=1}\^{\\infty}\\bigl(a_n\\cos(n\\omega_0x)+b_n\\sin(n\\omega_0x)\\bigr) \\right\cos(m\omega_0x)\,dx ∫−T/2T/2f(x)cos(mω0x)dx=∫−T/2T/2a0+n=1∑∞(ancos(nω0x)+bnsin(nω0x))cos(mω0x)dx

化简后得到:

a n = 2 T ∫ − T / 2 T / 2 f ( x ) cos ⁡ ( n ω 0 x )   d x a_n=\frac{2}{T}\int_{-T/2}^{T/2}f(x)\cos(n\omega_0x)\,dx an=T2∫−T/2T/2f(x)cos(nω0x)dx

类似地,对上式两边乘以 sin ⁡ ( m ω 0 x ) \sin(m\omega_0x) sin(mω0x),然后再在 − T 2 , T 2 \left-\\dfrac{T}{2},\\dfrac{T}{2}\\right −2T,2T 区间求积分,可以得到:

b n = 2 T ∫ − T / 2 T / 2 f ( x ) sin ⁡ ( n ω 0 x )   d x b_n=\frac{2}{T}\int_{-T/2}^{T/2}f(x)\sin(n\omega_0x)\,dx bn=T2∫−T/2T/2f(x)sin(nω0x)dx

整理后得到:

a 0 = 1 T ∫ − T / 2 T / 2 f ( x )   d x a_0=\frac{1}{T}\int_{-T/2}^{T/2}f(x)\,dx a0=T1∫−T/2T/2f(x)dx

a n = 2 T ∫ − T / 2 T / 2 f ( x ) cos ⁡ ( n ω 0 x )   d x a_n=\frac{2}{T}\int_{-T/2}^{T/2}f(x)\cos(n\omega_0x)\,dx an=T2∫−T/2T/2f(x)cos(nω0x)dx

b n = 2 T ∫ − T / 2 T / 2 f ( x ) sin ⁡ ( n ω 0 x )   d x b_n=\frac{2}{T}\int_{-T/2}^{T/2}f(x)\sin(n\omega_0x)\,dx bn=T2∫−T/2T/2f(x)sin(nω0x)dx

求出 a n , b n a_n,b_n an,bn 后,根据前面的替换,可以得到:

A n = a n 2 + b n 2 A_n=\sqrt{a_n^2+b_n^2} An=an2+bn2

φ n = arctan ⁡  ⁣ ( − b n a n ) \varphi_n=\arctan\!\left(-\frac{b_n}{a_n}\right) φn=arctan(−anbn)

其中, A n A_n An 称为幅度,表示不同频率余弦分量的"权重"; φ n \varphi_n φn 称为相位,表示不同频率余弦分量的初始相位。通过这些系数就可以恢复出原函数 f ( x ) f(x) f(x)。

傅里叶级数的复数形式

理论上讲,上面的傅里叶级数展开已经比较完备,但是形式上不是很统一,每个频率分量需要两个参数来表示。那么有没有一种统一的形式,使得傅里叶级数展开等号右边只有一种类型的基函数,而且基函数的参数可以统一表示出来呢?

要回答这个问题,要从欧拉公式开始。

欧拉公式

首先介绍欧拉公式:

e i x = cos ⁡ x + i sin ⁡ x e^{ix}=\cos x+i\sin x eix=cosx+isinx

由上式可以推出:

cos ⁡ x = e i x + e − i x 2 \cos x=\frac{e^{ix}+e^{-ix}}{2} cosx=2eix+e−ix

sin ⁡ x = e i x − e − i x 2 i \sin x=\frac{e^{ix}-e^{-ix}}{2i} sinx=2ieix−e−ix

通过欧拉公式将傅里叶级数转换到复数域

f ( x ) = a 0 + ∑ n = 1 ∞ a n cos ⁡ ( n ω 0 x ) + b n sin ⁡ ( n ω 0 x ) f(x)=a_0+\sum_{n=1}^{\infty}\lefta_n\\cos(n\\omega_0 x)+b_n\\sin(n\\omega_0 x)\\right f(x)=a0+n=1∑∞ancos(nω0x)+bnsin(nω0x)

带入欧拉公式,得到:

f ( x ) = a 0 + ∑ n = 1 ∞ a n e i n ω 0 x + e − i n ω 0 x 2 + b n e i n ω 0 x − e − i n ω 0 x 2 i f(x)=a_0+\sum_{n=1}^{\infty} \left a_n\\frac{e\^{in\\omega_0x}+e\^{-in\\omega_0x}}{2} + b_n\\frac{e\^{in\\omega_0x}-e\^{-in\\omega_0x}}{2i} \\right f(x)=a0+n=1∑∞an2einω0x+e−inω0x+bn2ieinω0x−e−inω0x

整理得:

f ( x ) = a 0 + ∑ n = 1 ∞ ( a n − i b n 2 e i n ω 0 x + a n + i b n 2 e − i n ω 0 x ) f(x)=a_0+\sum_{n=1}^{\infty} \left( \frac{a_n-ib_n}{2}e^{in\omega_0x} + \frac{a_n+ib_n}{2}e^{-in\omega_0x} \right) f(x)=a0+n=1∑∞(2an−ibneinω0x+2an+ibne−inω0x)

改用新的系数符号 c n c_n cn:

c n = { a n − i b n 2 , n > 0 a 0 , n = 0 a ∣ n ∣ + i b ∣ n ∣ 2 , n < 0 c_n= \begin{cases} \dfrac{a_n-ib_n}{2}, & n>0\\6pt a_0, & n=0\\6pt \dfrac{a_{|n|}+ib_{|n|}}{2}, & n<0 \end{cases} cn=⎩ ⎨ ⎧2an−ibn,a0,2a∣n∣+ib∣n∣,n>0n=0n<0

于是得到傅里叶级数的复指数形式:

f ( x ) = ∑ n = − ∞ + ∞ c n e i n ω 0 x f(x)=\sum_{n=-\infty}^{+\infty}c_n e^{in\omega_0x} f(x)=n=−∞∑+∞cneinω0x

其中

c n = 1 T ∫ − T / 2 T / 2 f ( x ) e − i n ω 0 x   d x c_n=\frac{1}{T}\int_{-T/2}^{T/2}f(x)e^{-in\omega_0x}\,dx cn=T1∫−T/2T/2f(x)e−inω0xdx

至此导出了傅里叶级数的复指数形式。此时基函数为复指数信号 e i n ω 0 x e^{in\omega_0x} einω0x,系数 c n c_n cn 是复数。每个频率分量只需要一个复数权重,因为这个复数同时包含了幅度和相位信息。

接下来求解不同情况下 c n c_n cn 的表达式:

当 n = 0 n=0 n=0 时:

c 0 = a 0 c_0=a_0 c0=a0

当 n > 0 n>0 n>0 时:

c n = a n − i b n 2 c_n=\frac{a_n-ib_n}{2} cn=2an−ibn

当 n < 0 n<0 n<0 时:

c n = a ∣ n ∣ + i b ∣ n ∣ 2 c_n=\frac{a_{|n|}+ib_{|n|}}{2} cn=2a∣n∣+ib∣n∣

不论 n n n 取何值, c n c_n cn 都可以统一表示为:

c n = 1 T ∫ − T / 2 T / 2 f ( x ) e − i n ω 0 x   d x c_n=\frac{1}{T}\int_{-T/2}^{T/2}f(x)e^{-in\omega_0x}\,dx cn=T1∫−T/2T/2f(x)e−inω0xdx

总结起来,任意一个周期为 T T T 的实值函数 f ( x ) f(x) f(x) 都可以展开为以下傅里叶级数:

f ( x ) = ∑ n = − ∞ + ∞ c n e i n ω 0 x f(x)=\sum_{n=-\infty}^{+\infty}c_n e^{in\omega_0x} f(x)=n=−∞∑+∞cneinω0x

其中 ω 0 = 2 π T \omega_0=\dfrac{2\pi}{T} ω0=T2π 称为基频率,不同频率分量的权重 c n c_n cn 是一个同时包含了幅度和相位信息的复数。

将 c n c_n cn 的表达式带入上式,得到周期函数 f ( x ) f(x) f(x) 的复指数形式傅里叶级数展开的完整表达式:

f ( x ) = ∑ n = − ∞ + ∞ ( 1 T ∫ − T / 2 T / 2 f ( ξ ) e − i n ω 0 ξ   d ξ ) e i n ω 0 x f(x)=\sum_{n=-\infty}^{+\infty} \left( \frac{1}{T}\int_{-T/2}^{T/2}f(\xi)e^{-in\omega_0\xi}\,d\xi \right)e^{in\omega_0x} f(x)=n=−∞∑+∞(T1∫−T/2T/2f(ξ)e−inω0ξdξ)einω0x

傅里叶级数到傅里叶变换

上式中的傅里叶级数展开是针对周期函数的,但是在现实中大多数信号都是非周期的。对于非周期函数 f ( x ) f(x) f(x),也存在类似的分解。

非周期函数可以看做是周期 T → ∞ T\to\infty T→∞ 的周期函数。当 T → ∞ T\to\infty T→∞ 时,基频率

ω 0 = 2 π T \omega_0=\frac{2\pi}{T} ω0=T2π

就变成了微分 d ω d\omega dω,同时求和

∑ n = − ∞ + ∞ \sum_{n=-\infty}^{+\infty} n=−∞∑+∞

就变成了求积分

∫ − ∞ + ∞ \int_{-\infty}^{+\infty} ∫−∞+∞

先将上式带入,然后将求和转化为积分。

ω = n ω 0 \omega=n\omega_0 ω=nω0

替换,则有

f T ( x ) = ∑ n = − ∞ + ∞ ( 1 T ∫ − T / 2 T / 2 e − i n ω 0 ξ f ( ξ )   d ξ ) e i n ω 0 x f_T(x)=\sum_{n=-\infty}^{+\infty} \left( \frac{1}{T}\int_{-T/2}^{T/2}e^{-in\omega_0\xi}f(\xi)\,d\xi \right)e^{in\omega_0x} fT(x)=n=−∞∑+∞(T1∫−T/2T/2e−inω0ξf(ξ)dξ)einω0x

又因为

1 T = ω 0 2 π \frac{1}{T}=\frac{\omega_0}{2\pi} T1=2πω0

所以

f T ( x ) = ∑ n = − ∞ + ∞ { ω 0 2 π ∫ − T / 2 T / 2 e − i n ω 0 ξ f ( ξ )   d ξ } e i n ω 0 x f_T(x)=\sum_{n=-\infty}^{+\infty} \left\{ \frac{\omega_0}{2\pi} \int_{-T/2}^{T/2}e^{-in\omega_0\xi}f(\xi)\,d\xi \right\} e^{in\omega_0x} fT(x)=n=−∞∑+∞{2πω0∫−T/2T/2e−inω0ξf(ξ)dξ}einω0x

当 T → ∞ T\to\infty T→∞ 时,周期函数 f T ( x ) f_T(x) fT(x) 变为非周期函数 f ( x ) f(x) f(x), ω 0 \omega_0 ω0 变成无穷小,上式等号右边过渡为一个积分:

f ( x ) = 1 2 π ∫ − ∞ + ∞ ∫ − ∞ + ∞ e − i ω ξ f ( ξ )   d ξ e i ω x   d ω f(x)=\frac{1}{2\pi} \int_{-\infty}^{+\infty} \left \\int_{-\\infty}\^{+\\infty} e\^{-i\\omega \\xi}f(\\xi)\\,d\\xi \\right e^{i\omega x}\,d\omega f(x)=2π1∫−∞+∞∫−∞+∞e−iωξf(ξ)dξeiωxdω

式中

F ( ω ) = ∫ − ∞ + ∞ f ( x ) e − i ω x   d x F(\omega)=\int_{-\infty}^{+\infty}f(x)e^{-i\omega x}\,dx F(ω)=∫−∞+∞f(x)e−iωxdx

称为"傅里叶变换";

f ( x ) = 1 2 π ∫ − ∞ + ∞ F ( ω ) e i ω x   d ω f(x)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}F(\omega)e^{i\omega x}\,d\omega f(x)=2π1∫−∞+∞F(ω)eiωxdω

称为"傅里叶逆变换"。

勘误说明:这里采用的是角频率记号 ω = n ω 0 \omega=n\omega_0 ω=nω0,因此最终应统一写为

F ( ω ) = ∫ − ∞ + ∞ f ( x ) e − i ω x   d x F(\omega)=\int_{-\infty}^{+\infty}f(x)e^{-i\omega x}\,dx F(ω)=∫−∞+∞f(x)e−iωxdx 和

f ( x ) = 1 2 π ∫ − ∞ + ∞ F ( ω ) e i ω x   d ω f(x)=\dfrac{1}{2\pi}\int_{-\infty}^{+\infty}F(\omega)e^{i\omega x}\,d\omega f(x)=2π1∫−∞+∞F(ω)eiωxdω。

如果指数中写成 2 π ω x 2\pi\omega x 2πωx,则变量应改为普通频率 u u u,同时逆变换前面不再写 1 2 π \dfrac{1}{2\pi} 2π1。

引用

如果本文的内容对你撰写学术论文有帮助,希望能考虑引用:

bibtex 复制代码
@misc{zhao2020fourier,
    title   = {从傅里叶级数到傅里叶变换:详细的数学推导},
    author  = {Kai Zhao},
    year    = 2020,
    note    = {\url{http://kaizhao.net/blog/fourier}}
}

一维离散傅里叶变换推导:

工科生以最快的速度理解离散傅立叶变换(DFT)_哔哩哔哩_bilibili

相关推荐
计算机安禾6 小时前
【算法分析与设计】第19篇:二分图匹配与指派问题
大数据·人工智能·算法
宇宙realman_9996 小时前
420B污染度等级查询代码
java·开发语言·算法
Dfreedom.6 小时前
深度学习量化技术全景解析:从校准算法到量化算子的完整指南
人工智能·深度学习·算法·量化·模型加速
如竟没有火炬7 小时前
乘法表中第K小的数——二分
开发语言·数据结构·python·算法·leetcode·职场和发展·动态规划
2401_876964137 小时前
27考研李艳芳网课|王谱2027数学讲义
人工智能·经验分享·深度学习·考研·算法·计算机视觉·概率论
努力的小张.7 小时前
最大子段和(前缀和解决)
算法
khalil10208 小时前
代码随想录算法训练营Day-58 图论08 | 拓扑排序精讲、dijkstra(朴素版)精讲
c++·算法·图论·dijkstra·拓扑排序·prim·最短距离
吃好睡好便好8 小时前
矩阵的乘法运算
数据结构·人工智能·学习·线性代数·算法·matlab·矩阵
Ricky05538 小时前
RF-DETR:实时检测变换器(transformers)的神经架构搜索(美国2025.12研究)
图像处理·人工智能·算法