记录But what is the Fourier Transform? A visual introduction.的学习。主要是对傅里叶变换的理解:
图形上看是旋转

物理上看是重心与频率的关系

数学上看是复平面、欧拉公式和无限积分。

应用上有去噪、图片处理和降噪耳机等。

核心定义:从“时域”到“频域”的翻译

傅里叶变换的核心功能是拆解。简单来说,给你一瓶紫色的颜料(叠加后的波形),它能精确地告诉你这瓶紫色是由 40% 的红色、30% 的蓝色和 30% 的白色混合而成的。从音乐的角度理解,交响乐由各种乐器(小提琴、大提琴、长笛)同时演奏,它们的声波叠加在一起。傅里叶变换有绝对音感,能从波形中分辨出里面包含了哪些频率的纯音。

image-20260116102155181

在这张图片中,

时域(上方的黄色波): 告诉我们信号在每一秒钟的强度是多少。

频域(下方的彩色波): 告诉我们信号里包含了哪些频率,以及每个频率的强度(振幅)是多少。

抽象一些的说法就是如果把复杂的波形看作是一个向量,那么那些简单的纯正弦波(彩色波)就是一组坐标轴。傅里叶变换的本质,是计算这个复杂信号在每一个特定频率的“坐标轴”上有多少分量。这就好比把一个颜色(如紫色)分解成一定比例的红色和蓝色。

image-20260116103917653

这张图展示了如何利用旋转和重心来提取频率。顶部的波形(Intensity)可以想象成一根长长的、有质量的金属丝,把这根“金属丝”按照某个频率(缠绕频率)绕在一个圆柱坐标系上。结果就是每一个时间点 $t$ 的强度值,被转化成了圆圈上距离圆心的距离。从原点到这个图形的每一个点能够形成一个向量,在上图中,顶部的图像纵坐标随时间的变化就可以变成上图中左下角图像向量的旋转,而在下图中, 每过两秒这个向量就转过一整圈。

为什么要把波形绕起来?核心在于观察这个图形的重心(Center of Mass)

  • 当缠绕频率与波形频率“对不上”时:

    波形会杂乱无章地均匀分布在圆心的四周。此时,这个“金属丝团”的重心非常接近坐标原点 $(0,0)$。

    此时可以对缠绕频率做一定的调整,比如:

    image-20260116105209550

    这个时候图形变得非常整齐、对称,像一朵漂亮的花。这说明缠绕频率信号频率之间存在某种整数倍关系。虽然它们有节奏上的共鸣,但并不是“同频呼吸”。虽然图形很美,但它是中心对称的。这意味着左边的花瓣和右边的抵消了,上面的和下面的抵消了。重心依然在原点附近。

    image-20260116105303814

    这里有两个比较关键的频率,直角坐标系中,一秒三个拍子(上下震荡三次),而在旋转的图像中,向量每秒钟转半圈(0.50 cycle/second),可以让他转的快些:

    image-20260116113259202

    也可以让他转的慢些:

    image-20260116113326851

  • 当缠绕频率刚好“等于”波形的真实频率时:

    当继续变换频率,直到缠绕频率 = 信号频率(3 次/秒)时,所有的波峰都会堆在该圆形的右侧,波谷都会堆在左侧。

    image-20260116113728737

    image-20260116113746097

    这张图片中白色虚线圆圈表示的是信号的“零偏离”基准线由于我们的原始信号是一个上下波动的正弦波,所以实线会根据波峰和波谷在虚线内外跳动。虚线圆的作用是衬托出实线图案的“不对称性”。实线相对于虚线圆偏移得越厉害,说明在这个频率下的信号分量越强。

    物理含义:此时两者完全同步。

    重心:图形不再是中心对称的,而是整个“甩”向了一边。重心会瞬间跳离原点。

    关于重心的解释:将这个图像中的图形想象成一根铁丝,那么这个图形会有一个重心,上面的花瓣图的重心就在接近原点的位置。

    可以用图像来表述质心关于频率的横坐标

image-20260116114807593

显然当频率很小的时候,他的质心横坐标就相对较大:

image-20260116114849790

继续旋转:

image-20260116115004546

而当和节拍一致的时候(每秒三拍),会出现一个尖峰,因为图像大部分都在右边:

image-20260116115404168

继续增加又会回到0附近:

image-20260116115507421

当然,如果上下移动这个波形,那么在当频率很小的时候,他的质心横坐标就会产生变化。比如这张图:

image-20260116115822208

那么0附近就不会出现波峰:

image-20260116115901942

image-20260116115929504

这样这个图像就会在3处出现一个尖峰。当然这样要考虑负值会很麻烦,只要知道0频率附近只和图像移动有关。

想要分解频率,那么就要关注3处的凸起。傅里叶变换其实就是一个重心测量机器。它把时间信号缠绕在圆圈上,然后在频率轴上记录下哪些频率能让这个圆圈失去平衡。那个让圆圈最不平衡的频率,就是信号原本的频率。

*这张图只是一个“近傅里叶变换”,和真正的还有一些区别。

这只是单个波形的情况,如果是多个波形叠加也是可以通过这样的操作分离出来:

image-20260116145612596

这张图左边展示了2hz和3hz的波形叠加后得到的情况,右边是做了“近傅里叶变换”后的图像,右边波峰的高度确实直接由原始波形的振幅决定。虽然 $2\text{ Hz}$ 和 $3\text{ Hz}$ 的波峰看起来差不多高,但在现实情况中,它们的高度取决于原始分量的振幅。

关于右边的图,个人理解是横轴 (频率)代表正在使用的探测频率。纵轴 (波峰高度)代表在这个特定频率下,信号所表现出的属性强度。这个属性代表了相关性,或者说是一种同步程度与能量密度,如果在 $3\text{ Hz}$ 处有一个巨大的波峰,这意味着原始信号中有很大一部分能量是在以每秒 3 次的频率振动的。

傅里叶变换的应用

比如一段音频,有很高频的噪声,傅里叶变换可以找到高频的尖啸部分,并且将他去掉。

image-20260116151149014

然后在对其做逆傅里叶变换,还原回原先的信号,这样就能够有效的去噪。

这个“单一尖峰”是为了演示方便而设定的理想化噪声,真实情况下,可能不是一个波峰而是好几个小波峰,甚至铺满整个高频区域的一段连续起伏。在去噪时,工程师不是只删掉一个点,而是会用“低通滤波器”把某一频率之后的整个区域全部“抹平”。

应用:

1.可以用在音频去噪。去掉背景音中的蜂鸣器发出的尖啸(滤掉高频),去掉空调、机箱等发出的声音(滤掉低频)。

2.并且由于每一种声音对应的频率都是固定的,可以用于降噪耳机的噪声算法识别。

3.图片美化。傅里叶变换处理的是随时间变化的波,而图片虽然是静止的像素点,也可以看作是一种“波”,只不过它是空间上的“频率”。沿着图片的一行像素走过去,像素的亮度(从黑到白)在不断变化,这个就是一种波。比如磨皮与锐化,皮肤上的瑕疵、皱纹、毛孔都属于高频细节。磨皮本质上就是一个低通滤波器:它保留了皮肤红润的底色(低频),但过滤掉了代表瑕疵的剧烈波动(高频)。这就是为什么磨皮太厉害照片会显得没细节,因为把所有的轮廓细节(高频)全滤掉了。

4.图片压缩(JPEG)人的眼睛对大面积的颜色(低频)很敏感,但对极细微的纹理变化(高频)不那么敏感。压缩算法会通过类似傅里叶变换的手段(如 DCT 变换),把图片中不重要的高频属性直接扔掉,从而极大地减小文件体积。

*学到这里的时候,我想既然峰值对应能量大小,那么这些频率的积分应该就是某一个常数,查了一下是叫做帕塞瓦尔定理:一个信号在时域里的总能量,严格等于它在“频域”里所有频率分量能量的积分(总和)。

*所以换一种角度来看,傅里叶变换的核心假设就是宇宙万物都可以由不同频率的圆周运动(正余弦波)叠加而成。这也是为什么FEDformer做时序列预测往往效果都还可以,如果一个时序列有重复规律,说明它内部存在稳定的频率成分。傅里叶变换就就可以把时序中那些藏得很深的、不同节奏的循环给找出来。这样就能够给模型提供一个全局视野,因为它直接把这种每隔几个时间步重复一次的规律浓缩成了一个频率分量(波峰)。而在时域中,信息是分散在数千个时间点里的;但在频域中,最关键的信息(规律)通常集中在少数几个频率点上。对这几个关键频率做 Attention,相当于把注意力集中在了信号的重要特征上,自动过滤掉了那些随机波动的杂质,这非常符合注意力机制的设计理念。

真正的傅里叶变换

之前讨论的一直是“近傅里叶变换”,因为只记录了重心在 x 轴(左右)移动。但在现实中,当频率对上时,重心可能会偏向任何方向——上方、下方、或者斜着。如果只看 $x$ 轴,你可能会漏掉信息。

如果用复平面来表示的话会方便很多。复平面是描述旋转的高效工具,因为在复数的世界里,“乘法”的本质就是“旋转”。

在复平面上,一个复数 $a + bi$ 可以完美地代表二维平面上的一个

  • 实部 ($a$):代表重心的左右偏移(也就是你之前看到的 $x$ 坐标)。
  • 虚部 ($bi$):代表重心的上下偏移($y$ 坐标)。
  • 模(距离):代表重心偏离原点的总距离。这就是你之前理解的“属性强度”或“振幅”
  • 辐角(角度):代表重心偏向了哪个方向。这就是“相位”

例如欧拉公式($e^{ix} = \cos x + i\sin x$),$e^{ni}$ 能表示成在圆周上“走” $n$ 个单位,

image-20260116162352684

想要描述一个每秒钟转一圈的旋转,那么就可以用$e^{2\pi it}$表示,其中t表示经过的时间。

如果在圆周上走了 $\pi$(约 3.14)个单位,从右边出发走半圆,则会刚好落在左边的 $-1$ 位置。这就是著名的 $e^{i\pi} + 1 = 0$。

image-20260116163335773

通常会在公式中引入 $f$(或者常说的 $\xi$),是为了把“走的距离”和“时间”关联起来,当把公式写成 $e^{i 2\pi f t}$ 时,这个$f$作为频率,起到了调节速度的作用。

*其实$2\pi f$就是和物理中的角速度的相关,$\theta = \omega t$,$\omega$ 是角速度,代表每秒转过的弧度。

物理概念 物理符号 傅里叶/欧拉公式中的符号 含义
频率 $f$ $f$ (或 $\xi$) 每秒钟旋转的圈数(缠绕频率)
周期 $T$ $1/f$ 转完一圈需要的时间
角速度 $\omega$ $2\pi f$ 每秒钟转过的“角度”(弧度)
相位/角度 $\phi$ $2\pi f t$ 在 $t$ 时刻,点落在了圆周的哪个位置

在物理中,我们经常用 $\cos(\omega t)$ 或 $\sin(\omega t)$ 来描述波动。但欧拉公式把这两者合二为一了:

这种表达方式让“波动”变成了一个在空间中不断旋转的向量。

而在傅里叶变换的语境下,向量都是按照顺时针的方式旋转的,所以一般来说,这个公式要加一个负号: $e^{-i 2\pi f t}$ ,并且由于这个公式表示的是一个“标准圆”,而在实际的波形中,或者采用刚才可以弯曲的金属丝的类比,需要乘上一个$g(t)$来表示不同形状的金属丝。

乘以 $g(t)$的作用:

  • 距离变化:圆周上的点到原点的距离不再固定为 $1$,而是变成了 $g(t)$ 在那一时刻的大小。
  • 结果:原本完美的圆被“拉伸”或“挤压”了。当 $g(t)$ 的数值大时,点离原点远;当 $g(t)$ 小时,点离原点近。
  • 这就形成了那些像花瓣、像心形、或者很乱的的缠绕图案。

数学一点的理解,可以把这个乘法看作是给旋转运动“加权”:

  • $e^{-2\pi ift}$ 提供了旋转的角度(节奏)。
  • $g(t)$ 提供了旋转的幅度(内容)。
  • 组合起来,$g(t)e^{-2\pi ift}$ 就代表了:在时间 $t$,原始信号在旋转圆盘上所处的真实的二维位置。

由于一开始是为了表示这个图案的质心,那么可以用积分来表示。

如果你把 $g(t)e^{-2\pi ift}$​ 看作是在圆盘上画出的那条复杂的曲线,那么积分的操作本质上就是在计算这条曲线的总和。想找一个物体的重心,最简单的方法就是把物体上所有点的坐标加起来,然后除以总长度(或者总质量)。

  • 相加的动作在数学里,在处理连续变化的曲线时,就是积分。
  • 公式:$\int_{t_1}^{t_2} g(t)e^{-2\pi ift} dt$, 这个积分,实际上是在把这段时间内金属丝在复平面上经过的所有位置点全部累加在一起。

这个公式能够解释那张3hz处突然起来的波峰。

当频率不对时:金属丝在圆盘上均匀地绕来绕去,正向的点和负向的点互相抵消了,积分(累加)的结果接近于 0。

当频率对上时:所有的点都堆在了圆的一侧(像那个心形图),大家劲儿往一处使,积分(累加)的结果就会变成一个很大的数值。

所以这个就是最后的公式:

其实就是在说为了在频率 $f$ 处得到一个值,把信号 $g(t)$ 按照频率 $f$ 顺时针(负号)卷在圆盘上,然后算出这段时间内所有点的总和(积分)。

当然关于刚才那一张质心在x轴的位置随频率变化的图像,也可以根据这个公式画上其在虚部的变化。

image-20260116171758100

简单来说,实部(Real part)记录的是重心在 $x$ 轴上的位置,而虚部(Imaginary part)记录的是重心在 $y$ 轴上的位置。

虚部的意义在物理上的解释就是相位。如果只看实部,那么只能知道这个频率的成分有多强,但你不知道它的起跑时刻。

  • 例子:想象两个频率一模一样的声波,但一个比另一个晚了半秒钟响起。
  • 结果:它们的实部波形可能看起来完全一样,但它们的虚部会截然不同
  • 结论:虚部和实部共同决定了重心的偏转角度。这个角度精确地告诉了我们:这个频率的波是从哪一个瞬间开始震动的。

注:在视频中,为了理解重心,作者用的是有限长的金属丝。但真正的傅里叶变换定义中,积分区间其实是从 $-\infty$ 到 $+\infty$。完整的公式如下: