最近由于项目需要,花几个小时,了解了傅里叶变换。
从本质上说,“FFT就是强制用一组标准基来拟合采样序列”,本文围绕这个核心思想,解释FFT是什么、如何工作,以及它如何在数字世界中发挥着无所不在的作用。
由于这种基拟合的方法与人工神经网络通用逼近定理有相同之处,接下来我们用一个系列文章来系统讲一下标准基、通用逼近定理、PCA、线性自编码器的联系和应用。
1、什么是“标准基”?——FFT的“乐高积木”
要理解FFT,首先要理解它用来“搭建”世界的“零件”——也就是“标准基”。
1. 一个直观的比喻:乐高积木
想象一下,任何复杂的信号(一段音乐、一张图片、一段脑电波)都是一个用乐高拼成的、形态独特的模型。而“标准基”就是一套官方标准的乐高积木套装,它只包含最基础、最规整的几种方块(如1x1, 1x2, 2x4等)。
FFT所做的,就是拿到那个复杂的模型,然后精确地告诉你:“这个模型是由5个1x1方块、10个1x2方块和8个2x4方块……组成的”。这个过程就是“拟合”,而最终的清单就是“频率分布”。
对于图像、声音等许多自然信号,其能量通常主要集中在低频部分,这部分构成了信号的整体轮廓和结构。而高频部分虽然能量较少,但承载了信号的边缘、细节和突变信息。我们可以通过文章后面的示例图直观感受。
2. 信号处理中的“标准基”
在信号处理的世界里,这套“标准积木”是一系列频率从低到高、形态完美、彼此正交的正弦波和余弦波。
这套“标准基”包含:
- 直流分量 (DC):频率为0的波,代表信号的平均值。
- 基波:在一个分析窗口内刚好完成1个完整周期的波。
- 谐波:在一个分析窗口内刚好完成2个、3个、4个……整数个周期的波。
3. “标准基”的核心特性:正交性 (Orthogonality)
“标准基”之所以“标准”,最根本的原因在于其正交性。通俗地讲,就是这套“标准尺子”之间互不相关、相互独立。比如,在一个窗口内振动2次的波形,和振动3次的波形,它们的相关性为零。
正交性至关重要,因为它保证了分解结果的唯一性和准确性。当你用“振动2次的标准波”去测量原始信号时,所有其他频率成分的干扰都为零。你测出来的结果,就只代表原始信号中“振动2次”这个频率的强度,干净利落。
2、如何确定“标准基”?——采样点数N的决定性作用
“标准基”并非固定、一成不变,而是和要分析的采样点数(N) 紧密相关。可以说,采样点数N决定了我们使用哪一套“标准基”。
这种决定性关系体现在三个方面:
- 决定了频率分辨率(精细度):N越大,频率分辨率越高。
- 比喻:N=1024就像一把刻度为“厘米”的尺子,而N=4096就像一把刻度为“毫米”的尺子。
- 公式:
频率分辨率 = 采样率 / N。N越大,能分辨的频率间隔就越小。
- 决定了“标准基”的具体形态:每一个“基波”的定义都与N直接挂钩。
- 一个在1024个点上完成1个周期的波形,和一个在2048个点上完成1个周期的波形,是两个完全不同的波形。改变N,就等于换了一套全新的坐标系。
- 决定了“标准基”的数量:一个N点的FFT,会生成一套包含
N/2 + 1个不同频率的“标准基”。
- N越大,你的“标准基”库里的“零件”种类就越多,分析结果也更丰富。
因此,当你决定要对N个采样点做FFT时,你其实是在说:“请给我一套为N个点量身定做的、正交的‘标准基’来进行测量。”
3、FFT应用框架流程
现在,我们可以构建一个完美的、高度概括的FFT应用框架。无论应用多么复杂,其底层逻辑都万变不离其宗:
1. 获取数据 (Acquire Data)
- 将物理世界的连续信号(声音、光、电信号等)通过传感器和ADC(模数转换器)转换成离散的
采样序列。
2. 核心变换 (Core Transformation)
- 对这个
采样序列进行FFT运算,也就是用标准基拟合。这个过程的本质是一次坐标系变换,将信号从“时间-振幅”坐标系,变换到“频率-能量/相位”坐标系,最终得到频率分布(频谱)。
3. 应用实现 (Implement Application)
- 在频域上对这个
频率分布进行解读和处理。这是所有魔法发生的地方。在频域,很多在时域上看起来极其复杂的问题,会变得出奇地简单。处理完毕后,往往会通过逆傅里叶变换(IFFT)再转换回时域信号。
4、框架应用——FFT在真实世界中的应用
让我们用几个案例来感受下FFT的实际应用价值。
案例一:音乐均衡器 (EQ)
采样序列:录制一段音乐,得到音频采样点。
标准基拟合:对音频做FFT,得到各频率(低音、中音、高音)的能量分布。
3. 解读和处理
- 解读:发现人声所在的1kHz频段能量偏低。
- 处理:在频谱上,将1kHz频段的数值乘以一个大于1的系数,实现增强。然后IFFT回时域播放,人声就更突出了。
案例二:音频降噪(消除电流声)
采样序列:录制一段含有“嗡嗡”电流声的语音。
标准基拟合:对音频做FFT,得到频谱。
3. 解读和处理
- 解读:在频谱图上发现一个非常尖锐的峰值,精确地出现在50Hz(或60Hz)。
- 处理:像做外科手术一样,将这个50Hz频率点的数值直接设为0。然后IFFT回时域,恼人的“嗡嗡”声就消失了。
案例三:听歌识曲(如Shazam)
采样序列:手机录制一小段正在播放的音乐。
标准基拟合:随时间推移,不断对音频片段做FFT,形成一张时频谱(Spectrogram)。
3. 解读和处理
- 解读:算法在时频谱上寻找能量最强的“峰值点”。
- 处理:将这些峰值点的时间和频率信息组合成一个独特的“指纹”,上传至云端与海量歌曲指纹库进行高速比对,匹配成功后返回歌曲信息。
案例四:JPEG图像压缩
采样序列:将图片分割成8x8的像素块,每个块的亮度值就是一个二维采样序列。(实际使用DCT,FFT的近亲)
标准基拟合:对像素块做变换,得到一个8x8的频率系数矩阵。低频代表平滑区域,高频代表边缘和细节。
3. 解读和处理
- 解读:人眼对高频细节(微小的亮度变化)不敏感。
- 处理:直接丢弃掉大部分高频系数,或用很低的精度来存储它们,只保留重要的低频系数。这使得存储数据量大大减少,实现压缩。
对于图像,可以从 https://monman53.github.io/2dfft/ 直观体验(自己可以上传图片),下面是2个具体的示例。 示例1:原始图像及对应的频谱图:


我们只选低频部分看(频谱图的中间是低频,越向外频率越高;左边图像为Inverse FFT还原图,也就是利用右边的有效频谱进行图像还原):

再单看上面低频部分之外的部分:

通过对比可以看出,图片的主要信息集中在低频部分,需要进行图片压缩的时候,只保留一定部分的低频就可以做到了(音频压缩的原理类似)。
示例二:原始图像(背景有规律的横纹)及频谱图:


从频谱图可以看到,纵轴上有一些亮点,我们猜测是背景横线的频谱(理论上也是如此),接下来把几个点mask掉:

可以看到,基本起到了去除背景横线的效果。工程上,利用程序来自动化判断处理,就可以有效解决此类的图片背景噪音。
结语
FFT远不止是一个复杂的数学公式,它是一种强大的思维方式。它让我们能够将信号从我们熟悉但难以处理的时域,切换到一个抽象但问题迎刃而解的频域。
通过理解“标准基”的构成、确定方式及其核心的“正交性”,我们就能深刻领会“强制用标准基拟合采样序列”这句话的内涵。而掌握了“采样-变换-处理”的流程框架,就拥有了一把解锁整个数字信号处理世界的钥匙。