· 2 min read

什么FFT 其实显示你

你听到的每一个声音都是正弦波的总和. "快变形记"将这个和数分解. 这就是它的意义,如何运作,为什么一个60年的算法仍然到处存在.

问题

在钢琴上演奏和弦—— 说C和E在一起. 耳闻一声. 但那个声音是两个频率叠加的:261.6赫兹和329.6赫兹. 你的鸡尾酒会把它们分开 不同的发细胞在不同频率产生共鸣 向大脑发出不同的信号.

"快速傅里叶变形记"(Fast Fourier Transform)也做同样的事情,但用数字代替毛细胞. 给它一个信号(一个随时间推移的振幅样本的序列),它返回一个频率及其优点的清单. 它回答:存在哪些频率,每个频率有多少?

到底发生了什么

随时间而取样的信号是数字列表:每个样本点的振幅. 在44,100赫兹的1秒录音是44,100个数字. 这些数字描述了时间域中的信号 — 振幅作为时间的函数.

FFT将其转换为频域 - 振幅作为频率的函数. 同样的信息,不同的代表. 如笛卡尔和极地坐标之间的切换:没有创建或破坏,只是重新表达.

数学核心:每个周期信号都可以写成不同频率的正弦和余弦波的总和. 这是傅里叶定理(1807). FFT计算了该金额的系数—— 每个频率有多少在信号中.

为什么"快"

计算傅里叶变身的天真方法需要 用于N样品的N2操作. 对于1024个样本,大约100万个操作. Cooley-Tukey算法(1965年)将它简化为N&log2(N)- 大约10,000个操作,用于相同的输入. 百度加速. 对于100万个样本,速度为50000x.

诀窍:将N点变换为两个N/2点变换,递归. 这要求N是2的功率(或者你用0的垫板). 每分一个,问题就减半. "蝴蝶"行动结合了两半:

X[k]     = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]

W是复杂指数(在复杂平面中旋转)的地方. 同样的两个子结果给你两个输出点. 这就是为什么算法是"快速"—— 它重复了两次计算.

PinePaper的执行是一本教科书Cooley-Tukey radex-2 DIT(及时的定律). 40行 JavaScript. 中国植物物种名录. 我们从零开始写它,而不是导入一个图书馆,因为我们希望学生能够阅读来源,理解每一行.

那些条子是什么意思

当你看到光谱分析器时.. 栏杆跳向音乐—— 每个栏代表一个频率桶. 高度是当前信号中该频率的大小(强度).

  • 纯正弦波 产生一个高的栏杆的频率,没有别的.
  • A平方波在基本和每个奇异的谐音(第3,第5,第7...)产生条,下降为1/n. 这就是为什么正方形波 听起来"buzzy" - 它们含有纯正弦没有的高频能量.
  • 白色的噪音** 产生大约相等的栏杆 各地. 每个频率都以同样概率存在.
    • 人的声音** 产生一个基本(你听到的音响) 加上成形剂—— 共振的峰值来自你声道的形状 区别元音.

前三个是下文—— 点击它们之间. 高度是公式, 不是绘画:正弦是1,正弦是1 在奇怪的谐音.

Interactive demo — open in editor pp:PinePaper

窗口:为什么边缘物质

有个捉. FFT假设信号会永远重复. 但我们的样本是有限的.. 它开始和停止. 如果两个端点的信号不恰好为零,突然的截断会产生人为的高频含量. 这被称为光谱泄漏.

固定器:将信号乘以窗口函数,在边缘平稳地将滴入到零. 常见窗口 :

  • Hann (Cosine Bell): 通用性好, 失去一些频率分辨率
  • Hamming:与Hann相似,但边缘未达到零,侧球压制略好
  • Blackman:主叶较窄,侧壁压制性更好,频率分辨率降低

选择总是在频率分辨率(如何精确地识别一个频率)和光谱渗漏(有多少能量会流进邻居的垃圾桶)之间进行权衡. 没有完美的窗户. 这是不确定性原则的后果—— 您不能任意准确地同时了解时间和频率.

FFT住的地方

你经常与 FFT 结果互动:

  • MP3和AAC压缩:将音频转换为频率域,丢弃低于听觉阈值的频率,压缩剩余内容. 变形是失声压缩的全部基础.
  • JPEG压缩:2D版本(DCT)将8×8像素块转换为频率域,将高频组件量化. 因此JPEG文物作为块块出现.
  • WiFi和5G:OFDM编码将数据分成多个频率子载体. FFT在时间域传输和频率域数据符号之间转换.
  • MRI成像:磁共振扫描仪的原始信号位于频率空间. 反向FFT重建空间图像. 从字面上来说:你所见过的每一个核磁共振都是反向的傅里叶变换.
  • Shazam:计算光谱(FFT over slipping windows),提取峰值,与一个数据库匹配图案. FFT是识别每首歌曲的第一步.

60年的算法,在你口袋里,每天运行数十亿次.

Interactive demo — open in editor pp:PinePaper

试试看

打开 PinePaper,选择光谱分析器生成器. 产生方波. 看着栏杆.. 你会看到奇异的口琴 脱落为1/n. 换成锯齿.. 现在所有的谐音都存在, 掉下来的1/n. 切换到噪音—— 平频谱,每个频率同样可能.

更改窗口功能 . 观察汉恩如何以更大的峰值为代价平滑光谱. 切换到布莱克曼.. 较窄的山峰,但侧面较低.

你没在看FFT. 你在测量信号 观察变换所揭示的. 即是知解之别.

参考资料

  • (原始内容存档于2018-09-21). Brigham, E.O. (1988) (英语). 快速傅里叶变换及其应用. 普伦提斯·霍尔.
  • (原始内容存档于2018-03-07). Cooley, J.W. & Tukey, J.W. (美国英语). (1965) (中文(简体) ). 计算复杂Fourier系列机器的算法. *计算数学 *,19(90),297-301.
  • 维基月球在线解说-费利耶, J. (1822) (英语). * Théorie analytique de la chaleur* (法语). 巴黎:菲尔明·迪多特.
  • (原始内容存档于2018-09-13). Harris, F.J. 1978 (英语). 与Discrete Fourier Transform(英语:Discrete Fourier Transform)一起使用视窗进行和谐分析. * IEEE*、66(1)、51-83号记录.
  • (原始内容存档于2018-03-21). Oppenheim, A.V. (原始内容存档于2018-10-29). Schafer, R.W. (2009年). * 散件-时间信号处理* (第3版). 普伦提斯·霍尔.
  • (原始内容存档于2018-09-26). Shannon, C.E. (1949) (中文(简体) ). 噪声中的联系. * IRE的收益*,37(1),10-21.
  • (原始内容存档于2018-09-21). Smith, S.W. (1997年). * 科学家和工程师数字信号处理指南*. 加州技术出版社.
  • 王, A., 等编. (2003年) (英语). 工业-斯坦格思音频搜索算法. * 2003年ISMIR收益. (夏扎姆的音频指纹算法
  • (原始内容存档于2019-03-03). Wallace, G.K. (1991年) (中文(简体) ). JPEG Still Pictures 压缩标准. * ACM通讯*,34(4),30-44.

PinePaper的FFT是Cooley-Tukey radex-2的安装,与汉恩,汉明,布莱克曼的窗口,加上低通和高通滤波器. 在 [pinepaper.studio/editor] (/editor) 免费尝试.

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor