直观理解傅里叶变换(把信号拆解成纯频率)

在钢琴上同时按下三个键,离开琴身的却是一道纠缠在一起的压力波。它撞上你的耳膜时是一条摇摆的曲线,而不是三条。然而你的内耳毫不费力地就把这条曲线重新拆回了三个音,训练有素的乐手甚至能直接说出这是什么和弦。在空气与你的意识之间的某个环节,一段混合信号被解混成了它的纯频率。
这种解混有一个名字。傅里叶变换正是这样一台数学机器:它接收任意信号,一段声音、图像的一行像素、一支股票的价格、一座桥梁的振动,然后把它改写成内部所含纯频率的清单。手机能压缩音频靠它,核磁共振能成像靠它,工程师听着发动机异响就能断言“那是 400 赫兹的那个分量”也靠它。
多数学生初遇傅里叶变换,都是把它当成一条需要背诵的公式:积分里塞着一个复指数,而这一切看不出任何理由。本文将从最底层重建这幅图像。我们不久前刚讲过与之密切相关的拉普拉斯变换,读到最后你会发现,两者其实是同一台机器,只是旋钮拧到了不同的档位。
同一件事物的两种描述
想想一块蛋糕的配方。你可以逐层逐屑地列出蛋糕内部每一点的状况来描述成品,也可以列出原料来描述它:200 克面粉、3 个鸡蛋、100 克糖。两种描述指向的是同一块蛋糕。一种在讲东西在哪里,另一种在讲它由什么构成。
一段信号同样拥有这两种描述:
- 时域列出信号在每一个瞬间的取值:0.001 秒时耳膜承受的压强,0.002 秒时的压强,依此类推。现实世界里的信号就是这样抵达我们的。
- 频域列出的则是原料清单:440 赫兹的正弦波含有多少,523 赫兹含有多少,每一个可能的频率各含有多少。这正是傅里叶变换的产物。
傅里叶的洞见最早发表于 1822 年,源自他对热传导的研究:这份原料清单是完备的。任何合理的信号,无论多么参差不齐,都能由一堆光滑的正弦波精确重构出来。不存在藏在别处的第三种原料。正弦波已经足够。
为什么正弦波是这套字母表
为什么是正弦,而不是方波、三角波或别的什么形状?因为正弦波是唯一能在物理所关心的运算下岿然不动的形状。
对正弦波求导得到余弦,也就是同一列波平移四分之一个周期。再求一次导得到负的正弦:还是同一个形状,只是缩放了一下。正如我们在三角学一文中探讨过的,正弦波就是从侧面看到的一个圆,而旋转一个圆永远不会把它变成别的东西。
把一列正弦波送进弹簧、电路或音乐厅,出来的仍是同频率的正弦波,可能变响或变轻,可能延迟了一点,但形状绝不会改变。工程师把具有这一性质的系统称为线性时不变系统,而几乎所有物理系统至少在近似意义上都属于此类。
这就是频域之所以有用的全部理由。如果你知道系统对每一个纯频率做了什么,而你又能把任意输入拆成纯频率,那么你就知道系统对每一个输入做了什么。“卡车压上来时这座桥会怎样”这个棘手问题,就变成了一串简单问题的清单:“这座桥在 1 赫兹时怎样,在 2 赫兹时怎样,在 3 赫兹时怎样。”
缠绕机器
现在来看机理。假设你手上有一段信号,想知道某个特定频率,比如每秒 3 个周期,究竟在其中藏了多少。下面是一套能回答这个问题的物理操作。
取出你信号的图像,那是沿时间轴画出的一条曲线。现在把这条曲线绕在一个圆上,缠绕速率取为每秒信号时间转 3 圈。信号数值大的地方,缠绕后的曲线离圆心很远;信号数值小的地方,它紧贴圆心。你会得到一团围着原点画出的乱线。
接下来求这团乱线的质心。
如果信号在 3 赫兹处什么也没有,信号的高峰与低谷就会落在圆周上随机的角度上。它们互相抵消,质心停在原点附近。可一旦信号确实含有 3 赫兹的分量,它的波峰就会一圈又一圈地落在圆的同一侧。它们不断堆积,质心随之远远地甩离原点。
把每一个可能的缠绕速率都这样做一遍,以缠绕速率为横轴、质心到原点的距离为纵轴画出图像,你画出的就是傅里叶变换。图上的峰值就是信号中存在的频率。整个思想就这么多,剩下的全是记号。
逐块拆解这条公式
用符号写下来,这台缠绕机器就是:
每一块都对应着操作中的一个步骤。
缠绕。 因子 就是那个旋转。根据欧拉公式,,这是一个以角频率 ω 沿单位圆顺时针移动的点。随着 t 的推进,这个点不停旋转。这一旋转就是缠绕,而 ω 就是缠绕速率。
包裹。 乘积 就是那团乱线。用信号值 f(t) 去乘那个单位长度的旋转点,会把它向外拉伸或向内收拢。信号值大就把点推得远离圆心,信号值小就把它拽回来。这个乘积描摹出的正是上一节那团乱线。
质心就是积分。 把这团乱线在每一个瞬间的位置从时间的起点一直加到终点,并把结果当作一个复数来看待,就得到一个点,它到原点的距离衡量了信号在 ω 处共振的强弱。严格说来这是总和而非平均,因此它会随信号时长而放大,但频谱的形状是一样的。
结果 对每一个 ω 都是一个复数,而它的两个部分都有意义。它的模是该频率的振幅:这份原料在配方里放了多少。它的辐角是相位:这份原料在周期的哪个位置开始。两段信号可以在每个频率上振幅完全相同,听起来却截然不同,因为它们的相位不同。
为什么用指数而不是正弦
学生常问,为什么核函数是复指数,而不干脆就用一列正弦波。毕竟你完全可以把信号乘上 再积分。
问题出在相位上。如果你的信号在频率 ω 处含有一个余弦,而你用同频率的正弦去检测它,乘积的平均值会等于零,因为正弦和余弦相差四分之一个周期。明明该频率完整地存在,你却会得出它不存在的结论。要想捕捉所有相位,你需要做两次检测,一次对正弦,一次对余弦,然后再把结果合并。
复指数一次就完成了两次检测。它的实部是余弦检测,虚部是正弦检测,全部打包在一个旋转的整体里。无论该频率带着怎样的相位到来,旋转中总有一部分与它对齐。所得复数的模,正是两次检测法合并后的结果,而它的辐角还免费告诉了你相位。在虚数一文中我们把 i 描述为一次旋转;在这里,那次旋转正在踏踏实实地干工程活。
负频率不是笔误
积分对所有 ω 取值,包括负值,而实信号的变换在负半轴上总会呈现一幅镜像。这让很多人不安。负频率在物理上究竟该是什么意思?
再看一眼欧拉公式。一个实余弦是两个旋转的平均:
第一项以速率 ω 逆时针旋转,第二项以同样的速率顺时针旋转。以 ω 顺时针旋转,正是变换记为频率负 ω 的那个东西。实数值信号无法区分这两个方向,所以它总是等量地含有两者,频谱因而是对称的。
对实信号而言,负半轴并不携带新的信息,实践中工程师也常常只画正半边。但保留两半能让公式保持对称,也让同一个变换能处理复数值信号,比如无线电和核磁共振中的信号,那里两个旋转方向确实是有区别的。
归途
把配方还原成蛋糕,就是傅里叶逆变换:
把它当成一条操作指令来读:对每一个频率 ω,取出这份原料的用量 ,让它以该速率逆时针旋转,再把所有结果加起来。指数上的符号从负号翻成了正号,因为你现在做的是解绕而不是缠绕。因子 2π 属于记账工作,用来修正一整圈等于 2π 弧度这件事;有些教材把它对称地拆成两个变换各分一个 ,也有些教材用赫兹而非弧度每秒来度量频率,从而把它完全藏了起来。物理没有变,变的只是常数。
这一对公式几乎完美对称。这份对称是一个深刻的暗示:时间与频率是同一个对象的两种视角,谁也不比谁更根本。
求导再一次变成了乘法
拉普拉斯变换的看家本领,是把求导变成乘以 s。傅里叶变换用 iω 玩了同样的把戏。
把逆变换公式对 t 求导。t 只出现在 里,而对它求导会拉下一个因子 iω:
于是 的傅里叶变换就是简简单单的 。在时间上求一次导,就是给每个频率分量乘上 iω:高频被放大,低频被压制,每个分量还被旋转了四分之一圈。这恰恰解释了为什么求导会让带噪信号更嘈杂。噪声住在高频区,而求导给那里乘上了很大的数。
同样的逻辑能把常系数微分方程变成关于 ω 的代数方程,物理学家正是这样求解波动方程和热传导方程的。傅里叶发明这套工具,本来就是为了这个目的。
傅里叶与拉普拉斯:一台机器,两档旋钮
把两个变换并排放在一起:
在拉普拉斯那篇文章里,我们把 s 描述成一个带两套档位的旋钮,:σ 管指数衰减,ω 管振荡。把衰减旋钮拧到零,也就是 σ = 0、s = iω,拉普拉斯的核 就变成了傅里叶的核 。傅里叶变换就是沿着 s 平面虚轴取值的拉普拉斯变换。
另一处差别是积分下限。拉普拉斯从 t = 0 开始,因为它是为有开机时刻和初值条件的因果系统而生的。傅里叶跑遍全时间轴,因为它是为一直存在、也将一直存在的稳态信号而生的:一个持续的长音,一段载波,一阵不变的嗡鸣。
用哪一个,由问题本身决定。瞬态、开关、初值条件,用拉普拉斯。频谱、滤波器、稳态振荡,用傅里叶。正是那个衰减旋钮,让拉普拉斯能处理无界增长的信号,而傅里叶积分吞不下这类信号;也正是双边积分,让傅里叶能描述没有起点的信号。
你逃不掉的那个取舍
最后一条性质能解释出乎意料多的物理现象。在时间上窄的信号,在频率上一定宽;在频率上窄的信号,在时间上一定宽。你不可能两头都占。
一列纯正弦波只有单一频率,所以它的频谱是一根尖峰。可纯正弦波是永远持续下去的。把它截成一秒,频谱就会在原频率周围散开;把它截成一毫秒,频谱散得还要远得多。在极限情形下,一次瞬时的咔哒声均匀地含有每一个频率,这就是为什么拍手听起来像白噪声,而音叉听起来是一个音。
缠绕的图像让这一点变得显而易见。一段短促的信号在任何缠绕速率下都只能绕上圆几圈,质心根本没有机会干净地抵消。许多相邻的缠绕速率都会给出相似的、不大不小的结果。而一段长信号要绕上千圈,只有速率精确匹配的那一个才能从抵消中幸存下来。
在量子力学中,位置和动量互为傅里叶对,而同样的这个取舍就是海森堡不确定性原理。它不是测量手段的局限,而是波本身的性质。
错误都出在哪里
学生在处理傅里叶变换时,会在三个可以预料的地方栽跟头。
第一是把相位丢了。因为拿去画图的总是振幅谱,学生渐渐就把变换想成了一份只有振幅的清单。于是逆变换算出来是错的,因为 的辐角被扔掉了。变换是一份复数清单,而每个复数有一半的信息在它的辐角里。
第二是符号和常数的混乱。不同教材把 2π 放在不同的位置,指数上也取不同的符号,只要正变换和逆变换彼此配套,它们全都是正确的。选定一套约定,把两条公式一起写在草稿纸的顶端,再检验一下对某个简单函数做完正变换再做逆变换是否原样返回。
第三是指望有限长的信号会给出干净的频谱。真实测量都是有限的,因此它们的频谱总会出现上一节说的那种展宽,外加边缘处突然截断带来的波纹。这不是计算出了错。这是那条取舍在宣示自己的存在,而窗函数正是为了管住它才存在的。
Math Zen 能帮上什么
傅里叶变换建立在三项技能之上,它们必须先变成本能,直觉才能带着你往前走:三角恒等式、复指数,以及乘积的积分。
如果在 与复指数之间互换还需要刻意思考,或者手算 的积分时心里没底,那么这个变换在你眼里就永远是个黑箱。Math Zen 用每天几分钟的短练习打磨这些零件:
- 三角学: 在三角学练习模块中,把和角公式、倍角公式以及它们背后的圆周图像练到熟极而流。
- 复数: 在复数练习模块中掌握极坐标形式、欧拉公式,以及用乘法实现旋转。
- 变换: 在拉普拉斯变换练习模块中操练同一套核积分机理,包括导数的变换。
当这些都变成条件反射,傅里叶变换就不再是一条公式,而回归它的本来面目:一台读出信号配方的缠绕机器。
核心总结
傅里叶变换把一段信号从“每个时刻的取值是多少”改写成“每个频率含有多少”。它之所以奏效,是因为正弦波正是物理系统不会改变的那种形状,所以只要知道一段信号的频率成分,就知道任何线性系统会如何响应它。
这条公式是一台缠绕机器: 以速率 ω 把信号绕在圆上,积分求出质心,质心远离原点就意味着该频率存在。复指数一次捕捉住所有相位,负频率是每个实信号都随身携带的那幅镜像,而逆变换靠着朝相反方向旋转来解绕。
把拉普拉斯变换的衰减旋钮拧到零,你得到的就是傅里叶变换。开关与瞬态用拉普拉斯,频谱与稳态信号用傅里叶,并且记住,无论用哪一个,在时间上短的信号在频率上一定宽。
常见问题
- 傅里叶变换到底做了什么?
- 它把一段按时间描述的信号改写成一份纯频率的配方。它不再逐个瞬间列出信号的取值,而是列出每一个正弦波频率含有多少分量、相位又是多少。信息量完全相同,改变的只是描述方式:从事情何时发生,变成了其中包含哪些频率。
- 为什么傅里叶变换使用复指数而不是正弦和余弦?
- 复指数 e^(iωt) 把一个余弦和一个正弦打包成了一个旋转的整体,因此一次积分就能同时捕获每个频率的振幅与相位。分开使用正弦和余弦也能得到同样的答案,但每个频率都要算两次积分,而且丢失了简洁的旋转图像。
- 傅里叶变换和拉普拉斯变换有什么区别?
- 两者都是用指数核去检测信号。拉普拉斯变换使用 e^(-st),其中 s = σ + iω 是复数,因此它既探测衰减也探测振荡,并且从 t = 0 向后积分。傅里叶变换令 σ = 0 并在全时间轴上积分,因此只探测纯粹的振荡。傅里叶变换就是被限制在虚轴上的拉普拉斯变换。
- 傅里叶变换为什么会出现负频率?
- 一个实数值的余弦可以写成一半逆时针旋转加上一半顺时针旋转。顺时针的那一半就是负频率。实信号的频谱永远呈镜像对称,负频率一侧并不携带新的信息,但保留它能让变换适用于复数值信号,也让公式保持对称。
- 傅里叶逆变换该怎么求?
- 把同一个积分反向再走一遍:给每个频率分量乘上 e^(+iωt),全部叠加起来,再除以 2π。在实际计算中,绝大多数逆变换靠的是与标准变换对照表进行模式匹配,并运用平移、伸缩、求导等性质,而不是直接硬算积分。


