科学发现 · 数学之美

傅里叶变换:
把世界拆成一道彩虹

一束白光穿过棱镜,会散成七色。两百年前,一个法国人说:任何复杂的信号,也能像白光一样,被拆成一堆最纯净的「单色」正弦波。当时几乎没人信他——包括当时最伟大的数学家。

科学发现专栏 · 王炳宁 · 2026-06-13 · 含数学推导与个人见解

⚡ 一句话抓住重点

傅里叶变换,就是一台「数学棱镜」:它把一个随时间变化的复杂信号(声音、心跳、地震、图像),拆解成无数个不同频率的纯正弦波的叠加,告诉你「这堆混乱里,到底藏着哪些频率、各有多强」。从描述热量如何流动,到 MP3、JPEG、Wi-Fi、CT、5G——现代数字世界几乎每一个角落,都站在这个想法上。

1807
傅里叶提交热传导论文,思想正式登场
15 年
被质疑、压着不发表,直到 1822 才成书
N→logN
1965 FFT 把计算量从天文数字砍到可行
~∞
今天每秒被调用的次数,几乎无法统计
01 · 直觉

先别看公式:它到底在干什么?

忘掉所有符号。想象你正坐在一架钢琴前,同时按下三个键,发出一个浑厚的和弦。你的耳朵听到的,是一团混在一起的声音——一条上下起伏、看起来毫无规律的波。

但你的大脑(以及任何一个训练有素的乐手)却能告诉你:「这里面有一个 do、一个 mi、一个 sol。」也就是说,大脑悄悄地把那团混乱的声波,分解回了三个纯净的音。

傅里叶变换,就是把这件事用数学做出来。它接收一段任意复杂的波形,吐出一张「清单」:里面有哪些频率(音高)、每个频率有多响(振幅)、彼此错开多少(相位)。

你听到的(时域) 傅里叶 变换 它真正的成分(频域) 低频 中频 高频
图 1 · 数学棱镜。左边是你实际观测到的、混在一起的复杂波形(橙色);它穿过傅里叶变换这块「棱镜」,被分解成右边一组频率干净、各不相同的纯正弦波(蓝/绿/红)。把它们再叠加回去,又能精确还原出左边那条乱七八糟的曲线。
💡 我的看法

这个想法最反直觉、也最迷人的地方在于:它声称「弯弯曲曲、带尖角、甚至断裂的任何形状」,都能用「最光滑、最规则」的正弦波拼出来。一个方波——上去、平、垂直掉下来——居然能由无数条圆滑的 sin 曲线叠加逼近。这在 1807 年听起来像是「用一堆圆球砌出一个直角」一样荒谬,这正是当年那些大数学家无法接受它的原因。

02 · 亲眼看见

用正弦波,拼出一个方波

说服你的最好方式,是让你亲手把它拼出来。下面这个方波,看起来跟圆滑的正弦波毫无关系。但傅里叶说:它就是一串特定正弦波的和。拖动滑块,往里面一个一个地加正弦波看看。

叠加的正弦波个数1
橙色虚线 = 我们想要的目标方波;青色实线 = 当前这些正弦波加起来的结果。从 1 条慢慢加到 40 条,看青线怎么一点点「长成」方波的样子。
$$f(t)=\frac{4}{\pi}\left(\sin t+\frac{1}{3}\sin 3t+\frac{1}{5}\sin 5t+\frac{1}{7}\sin 7t+\cdots\right)$$
这就是一个方波的「配方」:只用奇数倍频率的正弦波,振幅按 1、1/3、1/5、1/7… 递减地叠加。
$\sin t$最低的那条「基频」波,决定了方波的基本节奏(一个周期)。
$\frac13\sin 3t$频率是基频 3 倍的「谐波」,但只用 1/3 的力气。它负责把圆顶往平里压。
$\frac15,\frac17\cdots$越高频的波,振幅越小,但越来越多的高频细节,负责把转角「掰」得越来越直。
🔍 严谨一点:那个「过冲」是真的

仔细看你拼出的方波,在每个垂直跳变的拐角处,青线总会冲过头一小截,像帽檐一样翘起来,而且无论加多少条正弦波都消不掉(只会变窄)。这不是 bug——它是著名的 吉布斯现象(Gibbs phenomenon),那个过冲永远稳定在约 9%。它是傅里叶级数在「不连续点」处的固有脾气,1899 年才被吉布斯彻底说清。这正是当年数学家担心的事情:用连续的波,去逼近一个有跳跃的函数,边界处会出岔子。

03 · 发展历程

一个被「天才陪审团」否决的想法

傅里叶变换的诞生,不是某个安静午后的灵光一闪,而是一场持续了一个多世纪的拉锯战——关于「数学到底允许我们写下什么样的函数」的根本争论。

序幕:一根会振动的弦(1750s)

故事的种子,早在傅里叶出生前就埋下了。当时数学家在吵一个问题:一根振动的琴弦,它的形状该怎么用公式描述?欧拉、达朗贝尔、丹尼尔·伯努利各执一词。伯努利大胆提出:任何弦的形状,都能写成一堆正弦波(基音 + 泛音)之和。但欧拉和达朗贝尔强烈反对——他们认为「一根任意拉扯出来的形状」不可能用如此规则的正弦函数表示。这场争论悬而未决,整整搁置了半个世纪。

1768–1830让·巴普蒂斯·约瑟夫·傅里叶

主角登场:一个差点被送上断头台的数学家

傅里叶出身贫寒,是裁缝的儿子。他卷入法国大革命险些丧命,后来随拿破仑远征埃及,还当过格勒诺布尔的行政长官。他对「热」的痴迷近乎偏执——据说他常年把房间烧得滚烫,裹着厚衣服。正是为了解答「热量如何在固体里流动」,他发明了那套数学。

1807 · 12月21日巴黎科学院

那篇被「枪毙」的论文

傅里叶提交了《论固体中的热传播》。核心主张惊世骇俗:任何函数(哪怕是带尖角、带跳变的)都能展开成正弦和余弦的无穷级数。审稿委员会的名字今天每个理工科学生都认识——拉格朗日、拉普拉斯、勒让德

1808拉格朗日的否决

「这不可能。」

当时欧洲最伟大的数学家拉格朗日站出来强烈反对。他无法接受「不连续、带棱角的函数能用光滑的三角级数表示」——这与他毕生的数学直觉相悖。论文虽然拿到了 1811 年的数学大奖,评语却附了一句冷冰冰的批评:缺乏严谨性。它被压着,整整十五年不予发表

1822《热的解析理论》

熬到出书

傅里叶终于把工作扩写成专著《Théorie analytique de la chaleur》出版。这本书后来被开尔文勋爵称为「一首伟大的数学诗」。但「为什么这个展开是对的」这个根本问题,傅里叶自己其实没能严格证明

1829狄利克雷

第一个把它「钉死」的人

狄利克雷给出了第一个严格的收敛条件:满足若干温和前提(分段单调、有限个间断点等,即「狄利克雷条件」)的函数,其傅里叶级数确实收敛到原函数。拉格朗日担心的「能不能成立」,终于有了数学上的答案——傅里叶大体是对的。

1850s–1900s黎曼 / 吉布斯 / 勒贝格

逼出整个现代分析

为了彻底搞懂「傅里叶级数到底何时收敛、收敛到什么」,数学家不得不重新定义「函数」「积分」「收敛」本身。黎曼积分、勒贝格积分、集合论……现代数学分析的大半江山,都是被傅里叶这个问题逼出来的。吉布斯则在 1899 年讲清了那个 9% 的过冲。

1965库利 & 图基

FFT:让它从理论变成日常

库利(Cooley)和图基(Tukey)发表了快速傅里叶变换(FFT)算法,把计算量从 $N^2$ 降到 $N\log N$。这一下,原本要算到天荒地老的频谱分析,瞬间变得「按个键就出来」。冷战时期它最初是为了从地震信号里识别核试验。趣闻:高斯其实在 1805 年就用过本质相同的技巧,比傅里叶发表论文还早,但他随手写在拉丁文笔记里没发表,被埋没了一个半世纪。

💡 我的看法

这段历史最值得做研究的人记住的一点是:拉格朗日不是蠢,他是「对的」——只是对在了一个更小的范围里。当年没有「函数」「收敛」的严格定义,傅里叶的直觉跑在了语言前面。他赢了,但代价是逼着整个数学界花了一百年补上地基。很多真正的突破都是这个味道:先有一个「看起来不可能」的强主张,然后才有人慢慢把它的边界和条件补严谨。傅里叶提供了那个燃烧的直觉,狄利克雷、勒贝格们提供了灭火器和承重墙。

04 · 两个世界

时域与频域:同一件事的两张脸

傅里叶变换真正给我们的礼物,是两副看世界的眼镜。同一段信号,你可以问它两种完全不同的问题:

⏱️

时域(Time Domain)

「在每一个时刻,信号的值是多少?」——这是示波器、是录音波形、是你最熟悉的「随时间起伏」的曲线。横轴是时间。

🌈

频域(Frequency Domain)

「这段信号里,各个频率分别占了多少?」——这是频谱、是均衡器上那一排跳动的竖条。横轴是频率,纵轴是「这个频率有多强」。

关键在于:这两张脸包含完全相同的信息,可以无损地来回切换。傅里叶变换从时域走到频域,傅里叶逆变换再走回来,一点不丢。就像一个人的正面照和侧面照,都是同一个人。

时域:杂乱的波 时间 → FT 频域:三根「频率柱」 f₁ f₂ f₃ 频率 →
图 2 · 同一段信号的两副面孔。左边时域里那条看不出规律的橙色波,到了右边频域,立刻露出真身——它其实只由三个频率组成,每根「柱子」的高度就是那个频率的强度(振幅)。频域把「藏在时间里的结构」一眼摊开。

现在,看一眼公式(别怕)

把上面这句「拆成各种频率」翻译成数学,就是连续傅里叶变换的定义式。它看着吓人,但每一块都对应我们刚才说过的人话:

$$\hat{f}(\omega)=\int_{-\infty}^{\infty} f(t)\,e^{-i\omega t}\,dt$$
读法:「给我一个频率 $\omega$,我告诉你原信号 $f(t)$ 里含有多少这个频率的成分。」
$f(t)$你的原始信号,时域里随时间 $t$ 变化的那条曲线(声音、电压、股价……)。
$\hat f(\omega)$变换的结果:在频率 $\omega$ 上的「成分有多强」。把所有 $\omega$ 的结果连起来,就是频谱。
$e^{-i\omega t}$核心魔法。借欧拉公式 $e^{-i\omega t}=\cos\omega t - i\sin\omega t$,它其实就是一个频率为 $\omega$ 的「探针波」(一个旋转的单位向量)。
$\int \cdots dt$把原信号和这个探针波「逐点相乘再累加」。这一步是在问:原信号和这个频率的波「有多合拍」?合拍就累积出大值,不合拍就互相抵消归零。
🔍 为什么是「相乘再累加」?这是全部的诀窍

想象你想知道一段混合声里有没有 440Hz(标准音 A)。你拿一个标准的 440Hz 纯波去和它逐点相乘、再把乘积全加起来:如果原信号里真有 440Hz 的成分,它们「步调一致」,乘积大多是正的,累加出一个大数;如果原信号里这个频率根本不存在,正负乘积会相互抵消、加起来约等于零。傅里叶变换就是把这个「拿每一个频率的探针去测一遍」的过程,一次性写成了一个积分。这个「正交 → 不相关的频率相乘积分为零」的性质,正是整套理论能成立的数学基石。

从积分到求和:离散傅里叶变换(DFT)

计算机里没有「连续的曲线」,只有一串采样点。把上面的积分换成求和,就得到工程上真正在用的 DFT

$$X_k=\sum_{n=0}^{N-1} x_n\,e^{-i\,2\pi kn/N}$$
$x_n$ 是 $N$ 个采样点,$X_k$ 是第 $k$ 个频率上的强度。积分 → 求和,无穷 → 有限,连续 → 离散。
$x_n$第 $n$ 个采样值(比如麦克风每 1/44100 秒记一个数)。
$X_k$第 $k$ 个「频率桶」里的能量。$N$ 个点进去,$N$ 个频率出来。
$2\pi kn/N$第 $k$ 个频率的探针波,在第 $n$ 个采样点上转到的角度。
05 · 信号的两种身体

连续与离散:先把「信号」这个词说清楚

在谈傅里叶之前,得先分清一个常被混为一谈的区别:现实世界的信号是连续的,但计算机里能存的信号是离散的。傅里叶家族之所以有四个成员,根子就在这里。

一个信号(signal),本质就是「某个量随某个自变量变化」的函数。声音是声压随时间变化 $x(t)$;一张灰度图是亮度随空间坐标变化 $I(x,y)$;股价是收盘价随交易日变化。傅里叶最初研究的「热」,则是温度随位置与时间变化。它们形式各异,但都能问同一个问题:这里面藏着哪些「周期性的起伏」?

〰️

连续时间信号 $x(t)$

自变量 $t$ 取遍所有实数,每一个瞬间都有定义。真实的麦克风膜片振动、真实的电压波形,都是连续的。数学上用积分处理。

▪️▪️▪️

离散时间信号 $x[n]$

只在整数时刻 $n=0,1,2,\dots$ 有值,是连续信号被「每隔一段时间量一次」得到的一串数。计算机、CD、任何数字设备里跑的都是它。数学上用求和处理。

📐 一个约定:方括号 vs 圆括号

信号处理里有个不成文的记号约定:圆括号 $x(t)$ 表示连续($t$ 是实数),方括号 $x[n]$ 表示离散($n$ 是整数)。后文严格遵守这个区分——它能帮你一眼看出当前在连续世界还是离散世界。

06 · 数字化的代价

采样定理:为什么 CD 是 44100 Hz?

把连续信号变成离散的一串数,叫采样(sampling)——每隔固定时间 $T_s$ 量一个值。这个 $T_s$ 多大合适?太密浪费存储,太疏会出大事。回答这个问题的,是整个数字信号处理的奠基定理。

采样就是用一把「梳子」去戳原信号:每隔 $T_s$ 秒取一个点,得到 $x[n]=x(nT_s)$。每秒取的点数叫采样率 $f_s=1/T_s$(单位 Hz)。问题是:拿到这串离散点后,我们还能不能唯一地还原出原来那条连续曲线?

$$f_s \gt 2 f_{\max}$$
奈奎斯特–香农采样定理:只要采样率 $f_s$ 大于信号最高频率 $f_{\max}$ 的两倍,原连续信号就能被这串采样点完美无损地重建。
$f_{\max}$信号里含有的最高频率成分。比如人耳能听到的声音上限约 20 kHz。
$2f_{\max}$这个临界采样率叫奈奎斯特率(Nyquist rate)。低于它,信息就丢了。
$f_s/2$反过来,给定采样率 $f_s$,你能正确表示的最高频率叫奈奎斯特频率,等于采样率的一半。
💡 把数字代进去:CD 的 44.1 kHz 不是随便定的

人耳听觉上限约 $20\,\text{kHz}$,按定理至少要 $2\times 20=40\,\text{kHz}$ 采样。CD 选 $44.1\,\text{kHz}$,多出来的 $4.1\,\text{kHz}$ 是留给抗混叠滤波器的「过渡带」缓冲——现实里没有理想的「砖墙」滤波器,需要一点余量把 20 kHz 以上的东西滤干净。专业录音常用 $48\,\text{kHz}$、$96\,\text{kHz}$ 道理相同。电话语音只保留 $300\text{–}3400\,\text{Hz}$,所以 $8\,\text{kHz}$ 采样就够——这也是为什么电话里听不出音乐的高频质感。

违反定理会怎样:混叠(Aliasing)

如果信号里有高于 $f_s/2$ 的频率,又没被滤掉,灾难就来了:这些高频会伪装成一个本不存在的低频,混进你的数据里再也分不出来。这就是混叠

真实的高频信号(红) 采样点拟合出的「假」低频(青虚线) ● 实际采到的样本点
图 3 · 混叠:高频伪装成低频。红色是真实的高频波;采样点(橙)太稀疏,连起来后大脑/算法只能看到那条青色的低频假波。这两条波在所有采样时刻的取值完全一样——一旦采样完成,就再也无法区分谁是真的。电影里车轮「倒转」、相机拍屏幕出现的摩尔纹,都是混叠。
⚠️ 关键:混叠不可逆

混叠最可怕的地方是不可逆。一旦采样不足导致高频折叠进低频,原始信息就永久丢失了,事后任何算法都救不回来。所以数字系统在采样之前必须先用模拟抗混叠低通滤波器把超过 $f_s/2$ 的成分滤掉。「先滤波,再采样」是铁律。

07 · 一个家族四个成员

傅里叶四兄弟:FS / FT / DTFT / DFT

前面第 04 节给的连续傅里叶变换(FT)和离散傅里叶变换(DFT),其实只是一个家族里的两个。「时间是连续还是离散」「信号是周期还是非周期」两两组合,恰好生出四种傅里叶。搞混它们,是初学信号处理最常见的坑。

判别只看两件事:时域是连续还是离散,决定频域是「整条曲线」还是「无穷重复」;时域是周期还是非周期,决定频域是「离散的几根线」还是「连续的一片」。一个朴素的对偶律贯穿始终——一个域里「离散」,另一个域里就「周期」

名称时域频域核心公式用在哪
傅里叶级数 FS连续 · 周期离散(谐波线谱)$c_k=\frac1T\int_T x(t)e^{-i k\omega_0 t}dt$分析周期波形(如方波)
傅里叶变换 FT连续 · 非周期连续$\hat x(\omega)=\int x(t)e^{-i\omega t}dt$理论分析、连续信号
离散时间FT(DTFT)离散 · 非周期连续 · 周期$X(e^{i\omega})=\sum_n x[n]e^{-i\omega n}$数字滤波器理论分析
离散FT(DFT)离散 · 周期离散 · 周期$X_k=\sum_{n=0}^{N-1} x[n]e^{-i 2\pi kn/N}$计算机里真正在跑的
💡 一句话记牢这张表

看左列从上到下:时域一步步「被关进笼子」——先变周期(FS),再变离散(DTFT),最后又周期又离散(DFT)。对应地,频域也一步步从连续整片,收缩成离散的几根线。计算机只能存有限个数,所以时域必须既离散又有限(=周期),唯一能直接算的就是最下面那行 DFT。FFT 不是第五种变换,它只是计算 DFT 的快速算法。这点极易被误解。

🔍 谐波频率 $\omega_0$ 是怎么来的

傅里叶级数里 $\omega_0=2\pi/T$ 叫基频($T$ 是周期)。周期信号的频谱只能出现在 $\omega_0$ 的整数倍 $k\omega_0$ 上——这就是「谐波(harmonics)」:基频、二次谐波、三次谐波……第 02 节那个方波只含奇次谐波($1,3,5,7\dots$ 倍频),正是 FS 系数 $c_k$ 在偶数项上恰好为零的结果。乐器的「音色」差异,本质就是各次谐波振幅 $|c_k|$ 配比的不同。

08 · 复数不是装饰

为什么公式里非得有个 $i$?

几乎所有傅里叶公式里都蹲着一个 $e^{-i\omega t}$。很多人第一反应是「虚数好吓人」。但复数在这里不是炫技,它是用一个数同时记下两件事的最省力工具:每个频率有多强(幅度),以及它相对于零时刻偏移了多少(相位)。

欧拉公式:把旋转写成指数

一切的起点是数学里最美的一行等式,欧拉公式

$$e^{i\theta}=\cos\theta + i\sin\theta$$
它说:复指数 $e^{i\theta}$ 就是复平面上一个单位长度、角度为 $\theta$ 的向量。让 $\theta=\omega t$ 随时间增长,这个向量就在单位圆上匀速旋转,转速正是频率 $\omega$。
$\cos\theta$这个旋转向量在实轴(横轴)上的投影——就是我们熟悉的余弦波。
$\sin\theta$虚轴(纵轴)上的投影——正弦波。一个旋转,同时生出 sin 和 cos。
$e^{-i\omega t}$傅里叶里那个探针,就是一个反向旋转(顺时针)、转速 $\omega$ 的单位向量。拿它去「卷」信号,相当于把信号里同频率的旋转「停住」让它显形。

所以第 04 节那句「拿探针波逐点相乘累加」,几何上就是:用一个转速为 $\omega$ 的旋转向量,去和信号的每个瞬间相乘再求和(积分)。如果信号里真有这个频率的旋转成分,它会被「锁定」并累积成一个大的复数;否则旋转着旋转着就自己抵消归零。

变换的结果是复数:幅度谱与相位谱

正因为探针是复数,傅里叶变换的结果 $\hat x(\omega)$ 也是个复数。一个复数 $X=a+bi$ 可以拆成「长度」和「角度」两部分,分别对应两张极其重要的图:

$$\hat x(\omega)=\underbrace{|\hat x(\omega)|}_{\text{幅度}}\;\cdot\; e^{\,i\,\underbrace{\phi(\omega)}_{\text{相位}}}$$
任何复数都能写成「模 × 单位旋转」的形式。模 $|\hat x|$ 是该频率的强度,幅角 $\phi$ 是该频率的起始相位。
幅度谱 $|\hat x(\omega)|$每个频率「有多响」。均衡器上那排跳动的竖条、语音里的「能量分布」,看的都是幅度谱。这是最常用的一张。
相位谱 $\phi(\omega)$每个频率「从什么时刻起跳」。它常被忽略,却决定了波形的形状与对齐——把一张图的幅度谱和另一张图的相位谱拼起来重建,出来的图像内容更像提供相位的那张。相位携带了结构信息。
功率谱 $|\hat x(\omega)|^2$幅度的平方,表示每个频率「携带多少能量」。功率谱密度(PSD)是噪声分析、通信、震动诊断里的主力工具。
🔥 联网补充:相位的「不起眼」却致命

有一个经典实验(Oppenheim & Lim, 1981):把图像 A 的幅度谱和图像 B 的相位谱组合后做逆变换,重建出的图像看起来基本是 B。这说明对自然图像而言,相位谱承载了绝大部分「轮廓与结构」信息,幅度谱反而相对次要。这也是为什么很多压缩/增强算法对相位格外小心。

09 · 两条「黄金定理」

卷积定理与帕塞瓦尔:频域为什么这么好用

傅里叶变换之所以是工程师的瑞士军刀,靠的是两条让计算与直觉都大大简化的定理。它们也是「滤波」「去噪」「能量分析」背后的数学引擎。

卷积定理:时域的卷积 = 频域的相乘

卷积(convolution)是信号处理里最核心的运算:一个信号通过任何线性系统(滤波器、回声、模糊),输出都等于输入和系统「冲激响应」的卷积。直接算卷积很贵,但傅里叶给了一条捷径:

$$\mathcal{F}\{x * h\} = \hat x(\omega)\cdot \hat h(\omega)$$
时域里两个信号的卷积,等于它们各自频谱的逐点相乘。一个「缠绕累加」的复杂操作,到频域里变成了简单的乘法。
$x * h$时域卷积:$(x*h)(t)=\int x(\tau)h(t-\tau)d\tau$,把 $h$ 翻转、平移、逐点相乘再累加,算起来 $O(N^2)$。
$\hat x\cdot\hat h$频域里只是两条频谱对应点相乘,$O(N)$。配合 FFT,整条「FFT → 相乘 → 逆FFT」流程是 $O(N\log N)$,远快于直接卷积。
💡 这就是「滤波」的本质

所谓低通滤波(去高频噪声)、高通滤波(去直流/缓慢漂移)、带通滤波(只留某段频率),在频域里干的事简单到不可思议:把不想要的频率那一段乘以 0,想留的乘以 1。一个均衡器,本质就是给每个频段配一个乘数。卷积定理告诉我们,这等价于在时域里用某个滤波器核去卷积信号——两种视角,同一件事。AI 里卷积神经网络(CNN)的卷积、以及「频域里做卷积加速」也都源于此。

帕塞瓦尔定理:能量在两个域里守恒

傅里叶变换不创造也不毁灭能量,它只是换个角度看同一份能量。这就是帕塞瓦尔(Parseval)定理

$$\int_{-\infty}^{\infty}|x(t)|^2\,dt=\frac{1}{2\pi}\int_{-\infty}^{\infty}|\hat x(\omega)|^2\,d\omega$$
左边是时域总能量(信号平方的积分),右边是频域总能量(功率谱的积分)。两者恒等——能量既可以按「时间」清点,也可以按「频率」清点,总数一样。
$|x(t)|^2$瞬时功率,沿时间积分得总能量(如电阻上信号的发热量)。
$|\hat x(\omega)|^2$功率谱密度,沿频率积分得同一个总能量。这让「哪个频段贡献了多少能量」成为可量化的问题——震动诊断、音频响度、通信功率分配全靠它。
10 · 理想很丰满

现实里的麻烦:泄漏、分辨率与加窗

教科书里信号是无限长、完美周期的。但你手里永远只有一段有限长的录音。这个「截断」会引入三个绕不开的工程问题——任何认真做频谱分析的人都会撞上它们。

① 频率分辨率:看得多细,取决于看得多久

用 $N$ 个采样点、采样率 $f_s$ 做 DFT,能区分的最小频率间隔是:

$$\Delta f=\frac{f_s}{N}=\frac{1}{T_{\text{观测}}}$$
频率分辨率 $\Delta f$ 等于采样率除以点数,也等于观测总时长的倒数。想分辨两个靠得很近的频率,唯一的办法是观测更长时间
$T_{\text{观测}}=N/f_s$你录了多长时间。录 1 秒,分辨率约 1 Hz;想分辨相差 0.1 Hz 的两个音,至少得录 10 秒。这是物理铁律,加点数(补零)只能让谱线更密,不能真正提高分辨能力。

② 频谱泄漏:截断的代价

当你把一段信号「咔」一刀截下来分析,相当于给它乘了一个矩形窗。除非信号频率恰好是 $\Delta f$ 的整数倍(几乎不可能),否则截断的「断口」会让能量从那根本该尖锐的谱线,渗漏到周围一大片频率上去,本来一根线的谱变成一座带着旁瓣的「小山」。这就是频谱泄漏(spectral leakage)

矩形窗:泄漏严重 汉宁窗:泄漏被压下去
图 4 · 泄漏与加窗。同一个单频信号的频谱:左边用矩形窗(直接截断),主峰旁边拖着一长串「旁瓣」,能量泄漏到邻近频率;右边先乘一个汉宁窗(两端平滑地压到零)再做变换,旁瓣被大幅压低,谱线干净得多——代价是主峰略微变宽。

③ 加窗:用主瓣变宽,换旁瓣压低

解决泄漏的办法是加窗(windowing):变换前先把信号乘以一个两端渐渐归零的「窗函数」,消掉硬截断的断口。不同窗在「主瓣宽度」和「旁瓣高度」之间各有取舍:

窗函数主瓣宽度最高旁瓣适合场景
矩形窗(不加窗)最窄−13 dB(很高)频率分辨率优先、信号本就周期
汉宁窗 Hann−31 dB通用首选,振动/音频分析
汉明窗 Hamming−43 dB要压第一旁瓣,语音处理常用
布莱克曼窗 Blackman最宽−58 dB(很低)动态范围大、要看微弱邻频
🔍 没有免费午餐

加窗的本质是一场权衡:旁瓣压得越低(泄漏越少),主瓣就越宽(分辨率越差),靠得很近的两个频率越容易糊在一起。选窗就是在「能不能分开两个近邻频率」和「会不会被强信号的泄漏淹没弱信号」之间做取舍。这在后面的「时频不确定性」里会上升为一条更普适的原理。

11 · 时间去哪了

短时傅里叶与频谱图:让频率「随时间变化」

普通傅里叶变换有个致命短板:它告诉你信号里有哪些频率,却完全不告诉你这些频率出现在什么时刻。对一首歌、一句话、一段心电图,「先低后高」和「先高后低」的频谱可能一模一样——但它们显然是不同的信号。

短时傅里叶变换(STFT)

解决办法很朴素:别一次性分析整段,而是开一个滑动的小窗,一段一段地做傅里叶。窗滑到哪,就给出那一小段时间的局部频谱。把这些局部频谱沿时间排开,就得到了短时傅里叶变换

$$\text{STFT}\{x\}(\tau,\omega)=\int x(t)\,w(t-\tau)\,e^{-i\omega t}\,dt$$
比普通 FT 多了一个 $w(t-\tau)$——一个中心在时刻 $\tau$ 的窗函数。它先把信号「框」在 $\tau$ 附近一小段,再对这一小段做傅里叶。$\tau$ 一路滑过去,就得到「频率如何随时间演变」。
$w(t-\tau)$滑动窗,中心在 $\tau$。它决定「这一帧只看 $\tau$ 附近多长一段」。
$\tau$时间轴:窗滑到的位置。结果是一张二维的「时间 × 频率」图。

频谱图(Spectrogram):你天天见到它

把 STFT 结果取模平方 $|\text{STFT}|^2$,用颜色深浅画成一张「横轴时间、纵轴频率、颜色=能量」的热力图,就是频谱图(spectrogram)。音乐软件里那片随节奏闪动的彩色瀑布、语音识别喂给模型的输入、声纹识别看的「声音指纹」,全是它。AI 里的梅尔频谱图(Mel-spectrogram)就是把频率轴换成更贴近人耳感知的梅尔刻度后的频谱图——几乎所有语音/音频大模型的第一步。

不确定性原理:时间和频率不可兼得

这里藏着一个深刻的物理事实,和量子力学里海森堡测不准是同一个数学:窗开得越窄,你越能精确定位「频率发生在哪一刻」(时间分辨率高),但一小段时间里频率本身就测不准(频率分辨率差);窗开得越宽则反过来。两者乘积有个下界,永远无法同时无限精确

$$\Delta t \cdot \Delta \omega \ge \tfrac{1}{2}$$
时间分辨率 $\Delta t$ 与频率分辨率 $\Delta\omega$ 的乘积有下界。这不是技术不够好,而是傅里叶分析内禀的物理极限——和量子力学的位置–动量不确定性同源。
窄窗:时间准、频率糊 宽窗:频率准、时间糊 时间 → 时间 →
图 5 · 时频权衡。把时频平面切成格子:左边窄窗,格子「瘦高」——时间定位精确但频率方向粗糙;右边宽窗,格子「矮胖」——频率精确但时间方向模糊。每个格子的面积固定(受不确定性下界约束),你只能选择它的长宽比,无法把它缩成一个点。小波变换(wavelet)正是为更聪明地切这张网格而生。

💡 我的看法:这正是表示学习的母题

从普通 FT 到 STFT 再到小波,整条线索讲的都是同一件事:在「时间清晰度」和「频率清晰度」之间,没有免费的全局最优,只有针对任务的取舍。这和今天做 AI 的人天天面对的问题惊人地一致——选什么表示、在哪个尺度上看数据、用什么基去展开。傅里叶给了第一个、也是最优雅的答案,而它两百年来反复教我们的那句话始终没变:换一个基看世界,难题会自己化开;但你选的那个基,本身就是一种取舍。

12 · 让它飞起来

FFT:把「算到天荒地老」变成「眨眼之间」

DFT 写出来很美,但直接算它,代价巨大。算 $N$ 个频率,每个都要把 $N$ 个采样点乘一遍累加——总计算量是 $N^2$。当 $N$ 大起来,这是个灾难。

1965 年,库利和图基的 FFT 发现了一个聪明的「分而治之」结构:利用探针波的对称性,把一个大 DFT 反复拆成两个小 DFT,计算量从 $N^2$ 暴跌到 $N\log N$。这个差距,在大数据量下是生与死的区别

采样点数 N朴素 DFT(≈ N²)FFT(≈ N·log₂N)提速
1,024约 100 万次约 1 万次~100×
100 万约 1 万亿次约 2000 万次~5 万×
10 亿10⁹×10⁹(几乎不可能算)约 300 亿次(几秒钟)~3000 万×
🔥 联网补充:一个被低估的「世纪算法」

FFT 常被列为「20 世纪最重要的算法之一」(IEEE《计算科学与工程》曾把它选入 Top 10 算法)。最初的动机带着冷战色彩:从全球地震台站的数据里,分辨出「地下核试验」和「天然地震」的频率特征,用于核监测。结果它顺手催生了整个数字信号处理(DSP)产业。今天你手机里的每一次拍照、每一通电话、每一段语音转文字,背后几乎都有 FFT 在每秒运行成千上万次。

13 · 它就在你身边

你今天已经用过它几百次了

傅里叶变换早就从「描述热量」的纯数学,长进了现代生活的每一根毛细血管。下面这些,全是它在干活:

🎵

MP3 / AAC 音乐压缩

把声音转到频域后,扔掉人耳听不到的频率成分,文件瞬间小十倍。你听的每首歌都被它「瘦身」过。

📷

JPEG 图像压缩

用近亲「离散余弦变换(DCT)」把图像块转到频域,砍掉肉眼不敏感的高频细节。你看的每张网图基本都经过它。

📶

Wi-Fi / 4G / 5G

OFDM 调制把数据塞进几百个不同频率的子载波里同时发送,收发两端全靠 FFT/IFFT 在跑。没有它就没有现代无线通信。

🩻

CT / 核磁共振(MRI)

MRI 机器直接在「频域」里采集数据(k 空间),再用傅里叶逆变换重建出你身体的断层图像。它在帮医生看穿你。

🌍

地震 / 天文 / 雷达

从地震波里分离震源特征,从星光频谱里读出元素和红移,从回波里算出目标速度——全是频率分析。

🗣️

语音识别 / 声纹

语音先被切成小窗做 FFT 得到「频谱图」,再喂给模型。你对手机说的每句话,第一步都是傅里叶变换。

💡 我的看法:为什么做 AI 的人也该懂它

傅里叶变换的精神内核——「换一个基(basis)看问题,复杂的东西就会变简单」——其实贯穿了整个现代机器学习。语音、音频模型几乎都从「梅尔频谱图」起步,本质就是 FFT。更深一层,今天大模型里的 位置编码(RoPE 旋转位置编码) 用的正是不同频率的正弦/余弦旋转;卷积在频域里等价于逐点相乘(卷积定理),这是很多高效算子加速的理论依据。理解傅里叶,不只是为了情怀——它是「在合适的表示空间里,难题会自己化开」这一信念的最古老、最优雅的实证。两百年前一个研究热量的法国人留下的直觉,至今仍是我们处理信号与表示的底层语言。

🌈 写在最后

从一束被棱镜分开的白光,到一个被陪审团否决的疯狂想法,再到藏在你每一次通话、每一张照片背后的无名英雄——傅里叶变换走过了两百年。

它告诉我们一件朴素却深刻的事:世界看起来的混乱,往往只是因为我们站错了角度。换一副眼镜,把「随时间起伏」翻译成「由哪些频率组成」,那些看似无解的纠缠,就会自动散开成一道清晰的彩虹。这,大概就是数学最动人的魔法。

∫ f(t)·e⁻ⁱωᵗ dt

—— 一行公式,半个数字时代。