傅里叶变换把复杂信号分解为不同频率的分量,让许多时域中难以处理的问题能在频域中被清晰分析,因此是信号处理、通信和物理学的重要工具。
本章依次介绍傅里叶级数、收敛性、傅里叶变换和快速傅里叶变换(FFT)。
数学处理复杂问题的基本方法,是把复杂对象拆成一组简单、彼此独立的分量。向量可以沿正交基分解;傅里叶级数则试图把函数沿一组正交函数分解。
对两个向量 a,b∈Rn,内积定义为
⟨a,b⟩=k=1∑nakbk
内积为零时,两个向量正交:
a⊥b⟺⟨a,b⟩=0
函数没有有限个固定分量,怎样定义正交?先在 [a,b] 上等距取 n 个点,把函数值看成向量,再计算带有间隔 Δx 的离散内积:

⟨f,g⟩n=k=1∑nf(xk)g(xk)Δx,Δx=nb−a
当采样点无限加密,这个黎曼和趋近积分:
⟨f,g⟩=n→∞lim⟨f,g⟩n=∫abf(x)g(x)dx
因此,实函数在 [a,b] 上正交,当且仅当
∫abf(x)g(x)dx=0
直观上,积分为零表示 f(x)g(x) 的正负贡献整体抵消,而不是两条函数曲线处处互不相交。
任意向量 v∈Rn 都能沿 n 个单位向量分解:
v=v1e1+v2e2+⋯+vnen
自然要问:函数能否也拆成多个甚至无穷多个两两正交函数之和?一般情形涉及函数空间与收敛性。先把问题限制为:能否用正弦和余弦表示一个周期为 2π 的函数?
对 m,n≥1,在一个完整周期 [−π,π] 上定义内积
⟨f,g⟩=∫−ππf(x)g(x)dx
利用积化和差公式:
cos(mx)cos(nx)sin(mx)sin(nx)sin(mx)cos(nx)=21[cos((m−n)x)+cos((m+n)x)],=21[cos((m−n)x)−cos((m+n)x)],=21[sin((m+n)x)+sin((m−n)x)].
非零整数频率的正弦、余弦在完整周期上的积分都为零,因此
∫−ππcos(mx)cos(nx)dx={0,π,m=n,m=n,
∫−ππsin(mx)sin(nx)dx={0,π,m=n,m=n,
并且
∫−ππsin(mx)cos(nx)dx=0
常数函数 1 也与所有 sin(nx)、cos(nx) 正交。于是
1, cosx, sinx, cos2x, sin2x, …
构成一组两两正交的函数。
设 f 是以 2π 为周期的函数,它的傅里叶级数写作
f(x)∼2a0+k=1∑∞[akcos(kx)+bksin(kx)]
下面利用正弦、余弦函数的正交性求出系数。先取 k≥1,对级数两边同乘 cos(kx),并在 [−π,π] 上积分:
∫−ππf(x)cos(kx)dx=∫−ππ{2a0+n=1∑∞[ancos(nx)+bnsin(nx)]}cos(kx)dx
右侧除 akcos(kx) 外,其余项积分都为零,因此
∫−ππf(x)cos(kx)dx=ak∫−ππcos2(kx)dx=πak
所以
ak=π1∫−ππf(x)cos(kx)dx,k≥1
同理,两边同乘 sin(kx) 后积分,只有 bksin(kx) 被保留下来:
∫−ππf(x)sin(kx)dx=bk∫−ππsin2(kx)dx=πbk
因此
bk=π1∫−ππf(x)sin(kx)dx,k≥1
最后,直接对级数两边积分,所有正弦、余弦项都为零:
∫−ππf(x)dx=2a0∫−ππ1dx=πa0
因此,余弦系数可以统一写成
ak=π1∫−ππf(x)cos(kx)dx,k=0,1,2,…
这里使用 ∼ 而不是等号,因为傅里叶级数是否收敛、收敛到什么函数,还需要单独讨论。
傅里叶系数的计算只说明一个必要结论:如果 f(x) 能被这组正弦、余弦函数表示,那么系数只能这样取。
但把这些系数代回级数后,得到的无穷和是否真的等于原函数?令前 N 项的部分和为
Sn(x)=2a0+k=1∑n[akcos(kx)+bksin(kx)]
真正需要回答的问题是
n→∞limSn(x)=?f(x)
这个极限是否存在、何时等于 f(x),以及函数不连续时会收敛到哪里,就是傅里叶级数的收敛性问题。
傅里叶级数的第 n 个部分和定义为
Sn(x)=2a0+k=1∑n[akcos(kx)+bksin(kx)]
将 a0、ak、bk 的积分表达式直接代入,并使用余弦求和公式(见附录):
Sn(x)=π1∫−ππf(t){21+k=1∑n[cos(kx)cos(kt)+sin(kx)sin(kt)]}dt=π1∫−ππf(t)[21+k=1∑ncosk(x−t)]dt=π1∫−ππf(t)2sin2x−tsin[(n+21)(x−t)]dt
令 u=t−x。由于变量替换后的被积函数以 2π 为周期,积分区间可以移回 [−π,π]:
Sn(x)=π1∫−ππf(x+u)2sin2usin[(n+21)u]du
再把积分拆成 [−π,0] 和 [0,π],并在前一段令 u↦−u:
Sn(x)=π1∫−π0f(x+u)2sin2usin[(n+21)u]du+π1∫0πf(x+u)2sin2usin[(n+21)u]du=π1∫0π[f(x−u)+f(x+u)]2sin2usin[(n+21)u]du
最后定义狄利克雷核
Dn(u)=2sin2usin[(n+21)u]
傅里叶部分和便写成
Sn(x)=π1∫0π[f(x−u)+f(x+u)]Dn(u)du
这就是傅里叶部分和的狄利克雷积分表示。
先做一个直观分析。固定 δ∈(0,π),考察远离 u=0 的部分:
π1∫δπ2sin2uf(x−u)+f(x+u)sin[(n+21)u]du
当 n→∞ 时,正弦项振荡得越来越快;而在 [δ,π] 上,分母不会趋近于零。正负振荡相互抵消,因此在通常的正则条件下,这部分积分趋近于 0。所以 Sn(x) 的极限主要由 u=0 附近决定。
上面的“快速振荡相互抵消”可以由黎曼—勒贝格引理严格说明。
若 g 在 [a,b] 上分段连续,则
λ→∞lim∫abg(u)sin(λu)du=0,λ→∞lim∫abg(u)cos(λu)du=0
下面证明正弦的情形。任取 ε>0,把积分区间分成有限段:
a=x0<x1<⋯<xm=b
由于 g 分段连续,可以在每个区间 [xj−1,xj] 上选一个常数 cj,使这些常数构成的阶梯函数与 g 足够接近:
j=1∑m∫xj−1xj∣g(u)−cj∣du<ε
将积分分段,并在每一段中加减 cj:
∫abg(u)sin(λu)du=j=1∑m∫xj−1xj[g(u)−cj]sin(λu)du+j=1∑mcj∫xj−1xjsin(λu)du
第一部分的绝对值小于 ε。第二部分满足
j=1∑mcj∫xj−1xjsin(λu)du=j=1∑mcjλcos(λxj−1)−cos(λxj)≤λ2j=1∑m∣cj∣⟶0
因此
λ→∞limsup∫abg(u)sin(λu)du≤ε
由于 ε 可以任意小,正弦情形得证;余弦情形同理。
回到 3.2,在 [δ,π] 上令
g(u)=2sin2uf(x−u)+f(x+u),λ=n+21
若 f 分段连续,则 g 在该区间上分段连续。由黎曼—勒贝格引理,[δ,π] 上的积分确实趋近于 0。
考察傅里叶级数在 x0 处收敛到 S0 的情况,即
Sn(x0)⟶S0
为此计算 Sn(x0)−S0。由
∫0πDn(t)dt=2π
可得
Sn(x0)−S0=π1∫0π[f(x0+t)+f(x0−t)−2S0]Dn(t)dt
固定一个充分小的 δ>0,将积分拆成
∫0π=∫0δ+∫δπ
由黎曼—勒贝格引理,[δ,π] 上的积分趋近于 0。因此只需考察
π1∫0δ[f(x0+t)+f(x0−t)−2S0]2sin2tsin[(n+21)t]dt
当 t→0 时,
2sin2t∼t
因此,局部积分的核心形式为
Sn(x0)−S0≈π1∫0δtf(x0+t)+f(x0−t)−2S0sin[(n+21)t]dt
右侧已经写成“函数 × 快速振荡的正弦项”的形式,不再含有 sin(t/2) 分母。它只取决于 f 在 x0 附近的变化,这就是黎曼局部化定理。
由 3.4,傅里叶级数在 x0 处收敛到 S0 的充分必要条件是
n→∞lim∫0δtf(x0+t)+f(x0−t)−2S0sin[(n+21)t]dt=0
令
S0=2S1+S2
则上面的积分可以拆成
In+In−=∫0δtf(x0+t)−S1sin[(n+21)t]dt,=∫0δtf(x0−t)−S2sin[(n+21)t]dt
只要 In+→0 且 In−→0,就有 Sn(x0)→S0。
先看最简单的情况。若 f 在 x0 处可导,取
S1=S2=f(x0)
则
t→0+limtf(x0+t)−S1=f′(x0),t→0+limtf(x0−t)−S2=−f′(x0)
对于分段可微函数,这两个差商在 [0,δ] 上分段连续,并可在 t=0 处补成有限值。由黎曼—勒贝格引理,In+→0、In−→0,所以傅里叶级数收敛到 f(x0)。
进一步,若 f 在 x0 处不连续,但左右极限和左右导数存在,取
S1=f(x0+0),S2=f(x0−0)
则
t→0+limtf(x0+t)−S1=f+′(x0),t→0+limtf(x0−t)−S2=−f−′(x0)
同理,两个积分分别趋近于 0,傅里叶级数收敛到
S0=2f(x0−0)+f(x0+0)
若存在 δ>0,使
∫0δtf(x0+t)+f(x0−t)−2S0dt<∞
则傅里叶级数在 x0 处收敛到 S0。证明思路很直接:绝对可积条件保证括号中的函数可应用黎曼—勒贝格引理。
若存在 α>0、C>0,使得在 t→0+ 时
∣f(x0+t)−S1∣≤Ctα,∣f(x0−t)−S2∣≤Ctα
则傅里叶级数在 x0 处收敛到 S0=(S1+S2)/2。因为相应的差商至多为 Ctα−1,而 α>0 时它在 0 附近可积,所以满足狄尼定理。
若 f 在 x 左右的某个邻域内分别单调,且左右极限存在,则其傅里叶级数在 x 处收敛到
2f(x−0)+f(x+0)
在连续点,该值就是 f(x);在跳跃间断点,该值是左右极限的平均值。证明可对左右两侧分别使用积分第二中值定理和狄利克雷判别法。
因此,若一个 2π 周期函数在一个周期内分段单调,则它的傅里叶级数在每一点都收敛到上述左右极限的平均值。
由欧拉公式(见附录 A.4),
eikx=cos(kx)+isin(kx)
正弦、余弦可以合并为复指数。周期为 2π 的傅里叶级数写成
f(x)∼k=−∞∑∞ckeikx
利用复指数的正交性可得
ck=2π1∫−ππf(t)e−iktdt,k∈Z
现在设 f 的周期为 T,并记
ω=T2π
将 2π 周期中的 eikx 缩放为 eikωx,得到
f(x)∼k=−∞∑∞ckeikωx
系数为
ck=T1∫−T/2T/2f(t)e−ikωtdt,k∈Z
相邻频率 kω 的间隔为
Δω=ω=T2π
当 T 增大时,离散频率仍覆盖正、负整个频率轴,但相邻频率之间越来越密。
对定义在整个实数轴上的函数 f,先取 [−T/2,T/2] 上的部分,并将它以 T 为周期延拓。记
Δω=T2π,ωk=kΔω
定义
FT(ωk)=∫−T/2T/2f(t)e−iωktdt
由于 1/T=Δω/(2π),傅里叶系数为
ck=2πΔωFT(ωk)
代回傅里叶级数:
f(x)=2π1k=−∞∑∞FT(ωk)eiωkxΔω
当 T→∞ 时,
Δω=T2π→0
同时,时间积分区间扩展到整个实数轴:
F(ω)=∫−∞∞f(t)e−iωtdt
频率网格的黎曼和变成积分:
k=−∞∑∞FT(ωk)eiωkxΔω⟶∫−∞∞F(ω)eiωxdω
这说明离散的复指数展开在 T→∞ 时变成了连续频率上的积分。
函数 f(x) 的傅里叶变换定义为
F(ω)=∫−∞∞f(x)e−iωxdx
F(ω) 描述 f 在角频率 ω 上的复振幅。
傅里叶逆变换定义为
f(x)=2π1∫−∞∞F(ω)eiωxdω
正变换把函数分解为不同频率的复指数,逆变换再把这些频率成分叠加回原函数。本文把系数 1/(2π) 放在逆变换中;其他资料可能采用不同的系数分配方式。
设两个多项式各有 n 个系数:
A(x)=j=0∑n−1ajxj,B(x)=j=0∑n−1bjxj
直接展开 C(x)=A(x)B(x),每个 ai 都要与每个 bj 相乘,因此时间复杂度为
O(n2)
换一种思路:不直接计算乘积的系数,而是先计算多项式在一些点上的值。
一个含有 n 个系数的多项式,次数不超过 n−1。任取 n 个不同的点 x0,x1,…,xn−1,已知这些点上的值,就能唯一确定全部系数:
11⋮1x0x1⋮xn−1x02x12⋮xn−12⋯⋯⋯x0n−1x1n−1⋮xn−1n−1a0a1⋮an−1=A(x0)A(x1)⋮A(xn−1)
左侧是范德蒙德矩阵,其行列式为
0≤i<j≤n−1∏(xj−xi)
只要各点互不相同,行列式就不为 0,方程组有唯一解。若这些点是递增排列的实数,行列式进一步大于 0。
现在任取 2n 个不同的点 z0,z1,…,z2n−1,分别计算
A(zk),B(zk)
乘积多项式在这些点上的值可以直接得到:
C(zk)=A(zk)B(zk),k=0,1,…,2n−1
C(x) 的次数最多为 2n−2。严格来说,2n−1 个不同点已经足够;这里取 2n 个点,是为了后面选择适合快速计算的点数。多项式乘法便变成三步:
系数⟶在 2n 个点上的取值⟶逐点相乘⟶恢复乘积系数
任取不同点虽然能完成计算,但普通的求值和插值仍需要 O(n2)。降低复杂度的关键,是选择一组能够快速求值和插值的特殊点。
离散傅里叶变换在一组特殊的复数点上计算多项式的值,逆变换再由这些值恢复系数。多项式乘法因此可以转化为取值之间的逐点相乘。
设
A(x)=j=0∑n−1ajxj
在单位圆上等间隔选取 n 个点:
ωk=e−n2πik,k=0,1,…,n−1
把多项式代入这些点,得到
Xk=A(ωk)=j=0∑n−1ajωkj
这就是离散傅里叶变换(DFT)。它把系数向量 a 变成取值向量 X:
X=Fna
其中
Fn=ω00ω10⋮ωn−10ω01ω11⋮ωn−11⋯⋯⋯ω0n−1ω1n−1⋮ωn−1n−1
逐点相乘之后,还要从取值恢复多项式系数,也就是求 Fn 的逆矩阵。为此先介绍复数的共轭。
对于 z=a+bi,它的共轭复数为
zˉ=a−bi
也就是说,实部 a 保持不变,虚部 bi 的符号取反。
由 ωk=e−2πik/n 可得
ωˉk=en2πik
对于矩阵 M=(mij),先转置,再对每个元素取共轭,得到共轭转置矩阵 M∗:
(M∗)ij=mˉji
因此 Fn 的共轭转置为
Fn∗=ωˉ00ωˉ01⋮ωˉ0n−1ωˉ10ωˉ11⋮ωˉ1n−1⋯⋯⋯ωˉn−10ωˉn−11⋮ωˉn−1n−1
考察 Fn∗Fn 的第 i 行、第 j 列:
(Fn∗Fn)ij=k=0∑n−1ωˉkiωkj=k=0∑n−1e−n2πik(j−i)
当 i=j 时,每一项都是 1,和为 n。当 i=j 时,这是公比不为 1、但其 n 次方为 1 的等比数列,和为 0。因此
Fn∗Fn=nI
从而
Fn−1=n1Fn∗
所以逆离散傅里叶变换为
aj=n1k=0∑n−1Xkωˉkj
设 n=2r,两个多项式各有 n/2 个系数:
A(x)=j=0∑n/2−1ajxj,B(x)=j=0∑n/2−1bjxj
乘积 C(x)=A(x)B(x) 的次数最多为 n−2,因此 n 个取值足以确定它:
-
**取点:**选取 ωk=e−2πik/n,k=0,1,…,n−1。
-
**求值:**计算 Ak=A(ωk) 和 Bk=B(ωk)。
-
**逐点相乘:**计算 Ck=AkBk。
-
**逆变换:**计算
cj=n1k=0∑n−1Ckωˉkj
得到 C(x) 的全部系数。
DFT 定义了系数与取值之间的变换;FFT 是计算这一变换的快速算法。
快速傅里叶变换(FFT)不是新的变换,而是利用单位根的对称性快速计算 DFT。最基本的是基-2 FFT,设 n=2r。
偶函数与奇函数分别满足
f(−x)=f(x),g(−x)=−g(x)
一般多项式可以按偶数次项和奇数次项拆开:
A(x)=E(x2)+xO(x2)
其中
E(y)O(y)=a0+a2y+a4y2+⋯,=a1+a3y+a5y2+⋯
E 和 O 各有 n/2 个系数。对于一对取值点 x 与 −x,有
A(x)A(−x)=E(x2)+xO(x2),=E(x2)−xO(x2)
因此,只需求出 E(x2) 和 O(x2),就能同时得到 A(x) 与 A(−x)。一个规模为 n 的 DFT 由此被拆成两个规模为 n/2 的 DFT。
对于 k=0,1,…,n/2−1,单位根满足
ωk+n/2=−ωk,ωk+n/22=ωk2
而
ωk2=e−n/22πik
正好是规模为 n/2 的 DFT 所使用的取值点。记两个子问题的结果为
Ek=E(ωk2),Ok=O(ωk2)
则前一半取值为
Xk=A(ωk)=Ek+ωkOk
后一半取值为
Xk+n/2=A(ωk+n/2)=Ek−ωkOk
因此,同一组 Ek、Ok 经过一次加法和一次减法,就能同时得到 Xk 与 Xk+n/2。这一步称为蝶形合并:
XkXk+n/2=Ek+ωkOk,=Ek−ωkOk
逆变换为
aj=n1k=0∑n−1Xkωˉkj
与正向 FFT 相比,只需将 ωk 换成 ωˉk,拆分和合并过程不变,最后再除以 n。
两个规模为 n/2 的子问题继续按照相同方式拆分,直到只剩一个系数。计算过程形成一棵递归树:
n⟶2×2n⟶4×4n⟶⋯⟶n×1
每一层共有 n 个数据,合并需要 O(n) 次运算;从 n 递归到 1 共有 log2n 层。因此
T(n)=2T(2n)+O(n)=O(nlogn)
多项式乘法包含两次 DFT、一次逆 DFT 和一次逐点相乘,总复杂度为
O(nlogn)
练习题:洛谷 P3803:多项式乘法(加强版)。
设两个多项式的次数分别为 n 和 m,乘积共有 n+m+1 个系数。基-2 FFT 要求取值点数是 2 的整数次幂,因此取
N=2⌈log2(n+m+1)⌉
再将两个系数数组统一补零到长度 N。n 和 m 本身不需要是 2 的整数次幂,只要 N≥n+m+1 即可。
代码依赖 <cmath>、<complex> 和 <vector>。sign=-1 表示 DFT,sign=1 表示逆 DFT 所需的共轭方向。
vector<complex<double>> fft(
const vector<complex<double>>& A,
const int n = static_cast<int>(A.size());
vector<complex<double>> evenA(n / 2);
vector<complex<double>> oddA(n / 2);
for (int i = 0; i < n / 2; ++i) {
const auto E = fft(evenA, sign);
const auto O = fft(oddA, sign);
// w = exp(sign * 2πi / n),wk = w^k = exp(sign * 2πik / n)。
// 不在循环中调用 pow(w, k):按快速幂计算时单次为 O(log k),
const double pi = acos(-1.0);
const complex<double> w = exp(
complex<double>(0, sign * 2.0 * pi / n));
complex<double> wk = 1.0;
// X[k] = E[k] + wk * O[k],X[k + n/2] = E[k] - wk * O[k]。
vector<complex<double>> X(n);
for (int k = 0; k < n / 2; ++k) {
X[k + n / 2] = E[k] - wk * O[k];
vector<complex<double>> ifft(
const vector<complex<double>>& X) {
vector<complex<double>> A = fft(X, 1);
const int n = static_cast<int>(X.size());
for (auto& coefficient : A) {
vector<long long> multiply(
const vector<long long>& A,
const vector<long long>& B) {
static_cast<int>(A.size() + B.size() - 1);
// 两个多项式统一补零到不小于结果长度的最小 2 次幂。
vector<complex<double>> paddedA(N, 0.0);
vector<complex<double>> paddedB(N, 0.0);
for (int i = 0; i < static_cast<int>(A.size()); ++i) {
for (int i = 0; i < static_cast<int>(B.size()); ++i) {
const auto valueA = fft(paddedA);
const auto valueB = fft(paddedB);
// C(w_k) = A(w_k)B(w_k)。
vector<complex<double>> valueC(N);
for (int k = 0; k < N; ++k) {
valueC[k] = valueA[k] * valueB[k];
const auto coefficientsC = ifft(valueC);
vector<long long> C(resultSize);
for (int i = 0; i < resultSize; ++i) {
C[i] = llround(coefficientsC[i].real());
令
Cn(u)=cosu+cos2u+⋯+cosnu=k=1∑ncos(ku)
利用恒等式
2sin2ucos(ku)=sin[(k+21)u]−sin[(k−21)u]
对 k=1,2,…,n 求和,中间项依次抵消:
2sin2uCn(u)=sin[(n+21)u]−sin2u
所以
Cn(u)=2sin2usin[(n+21)u]−21
加上 21,得到
21+k=1∑ncos(ku)=2sin2usin[(n+21)u]
当 u=2mπ 时,上式按极限取值 n+21。
将闭区间 [a,b] 分成若干小区间:
a=x0<x1<⋯<xn=b
在每个 [xi−1,xi] 中任取一点 ξi,构造黎曼和
i=1∑nf(ξi)(xi−xi−1)
记最长的小区间长度为
∥P∥=1≤i≤nmax(xi−xi−1)
如果无论怎样分割、怎样选择 ξi,当 ∥P∥→0 时,黎曼和都趋近于同一个数 I,就称 f 在 [a,b] 上黎曼可积,并定义
∫abf(x)dx=I
每一项是一个小矩形的面积;黎曼积分就是这些面积在分割无限变细时的极限。
泰勒多项式用函数在 x0 处的各阶导数构造多项式,使两者在该点具有相同的值、斜率、曲率以及更高阶变化:
f(x)=f(x0)+f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+⋯+n!f(n)(x0)(x−x0)n+Rn(x)
有限阶多项式通常只在 x0 附近近似 f。只有当
Rn(x)→0
时,才能令 n→∞,用无穷级数精确表示函数。
当 x0=0 时,上式称为麦克劳林展开:
f(x)=k=0∑nk!f(k)(0)xk+Rn(x)
指数函数的各阶导数仍是指数函数,因此
ex=k=0∑nk!xk+Rn(x)
泰勒余项满足
∣Rn(x)∣≤e∣x∣(n+1)!∣x∣n+1→0
所以对任意实数 x,都有
ex=k=0∑∞k!xk
对复数 z,相邻两项绝对值之比为
zk/k!zk+1/(k+1)!=k+1∣z∣→0
它对任意有限的 z 都绝对收敛,因此指数函数幂级数的收敛半径为
R=∞
用收敛半径为无穷的幂级数定义复指数函数:
ez=k=0∑∞k!zk
令 z=iθ,将偶数项与奇数项分开:
eiθ=(1−2!θ2+4!θ4−⋯)+i(θ−3!θ3+5!θ5−⋯)=cosθ+isinθ
因此
eiθ=cosθ+isinθ
反过来,
cosθ=2eiθ+e−iθ,sinθ=2ieiθ−e−iθ
两个函数 f、g 的卷积定义为
(f∗g)(t)=∫−∞∞f(τ)g(t−τ)dτ
令 h=f∗g,并分别用 F(ω)、G(ω)、H(ω) 表示 f、g、h 的频谱。在积分允许交换顺序时,
H(ω)=∫−∞∞[∫−∞∞f(τ)g(t−τ)dτ]e−iωtdt=∫−∞∞f(τ)[∫−∞∞g(t−τ)e−iωtdt]dτ=∫−∞∞f(τ)[∫−∞∞g(u)e−iω(u+τ)du]dτ=[∫−∞∞f(τ)e−iωτdτ][∫−∞∞g(u)e−iωudu]=F(ω)G(ω)
其中令 u=t−τ,并使用
e−iω(u+τ)=e−iωue−iωτ
将只含 u 与只含 τ 的部分分开。因此
H(ω)=F(ω)G(ω)
即时域卷积在频域中变成普通乘法。