· 2 min read

FFT實際上讓你看到了什麼

你聽到的每一聲聲音都是正弦波 快速傅里叶變形器會分解這個總和 這意味著,它是如何運作的, 以及為什麼一個60歲的算法 仍然無處不在.

問題

在鋼琴上演奏和弦——比如C和E一起演奏. 你的耳朵聽到一個聲音 但這聲音是超過兩個頻率的:261.6Hz和329.6Hz. 不同的毛細胞在不同的頻率下回應, 向你的大腦發出不同的訊息.

快速傅里叶變形也有同樣的功能 但有數字而不是毛細胞 給它一個信號( 隨時間推移的振幅樣本序列) , 它會傳回一個頻率和強度的清單 。 答案是:** 有多少頻率

到底發生了什麼

逐年抽查的訊號是數字列表: 每個樣點的振幅 。 一秒鐘的錄音是44100赫茲的數字 這些數字描述的是時域中的訊號——振幅是時空的函数.

FFT 將它轉換為**頻率域 ** —— 振幅為頻率的函数 。 相同的信息,不同的代表。 就像在笛卡爾和極地座標之間切換: 沒有建立或毀滅, 只有重新表示.

數學核心: 每一個周期性信號都可以被寫成不同頻率的正弦和余弦波的总和 。 這是Fourier的定理(1807年). FFT 計算總和的系数.

為什麼"快"

用天真的方法來計算 Fourier 變化需要 N2樣本的操作 1 024個樣本,大概有100萬次 Cooley-Tukey算法(1965年)將它降為N&log2(N)——同一個輸入的操作約10,000次. 一100x加速。 對一百萬個樣本來說 速度是5萬x.

技術:把 N 點轉換成 2 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. 我們從零開始寫,而不是匯入圖書館, 因為我們希望學生能夠讀取來源.

那些巴的意思

當你看到一個光谱分析器 —— 跳到音樂的酒吧 —— 每一個酒吧代表一個頻率桶。 高度是目前信號中频率的大小( 強度) .

  • 一個純正弦波.
    • 平方波** 在基本和奇特的口琴(第3、第5、第7、第7、第1、第1、第1、第1、第1、第1、第2、第2、第3、第3、第5、第5、第7、第7、第1、第1、第1、第1、第1、第1、第1、第1、第2、第3、第3、第5、第5、第5、第7、第7、第1、第1、第1、第1、第1、第1、第1、第1、第3、第2、第3、第3、第5、第5、第5、第7、第7、第1、第1、第1、第1、第1、第1、第1、第1、第1、第1、第1、第1、第1、第1、第2、第2、第2、第2、第2、第2、第2、第2、第3、第3、第3、第3、第2、第3、第3、第 所以正方形波會發出「buzzy」的聲音.
  • 白色的噪音 到處都有高度大致相等的酒吧 每一個頻率都有相同的可能性.
  • 發出一個基本的(你聽到的)發音 加上成形物.

視窗: 為什麼邊緣重要

有擒. FFT假設信號會永遠重複 但我們的樣本是有限的 開始和停止 如果信號在兩端沒有零點 突然的截斷會產生人工的高頻含量 這叫做光谱泄漏.

固定 : 乘以** 窗口函數 ** , 它能平滑地在邊緣拍攝到零 。 共同視窗 :

  • ** Hann**(餘弦鐘):一般目的好,失去一些頻率分辨率
  • ** Hamming **:與Hann相似,但邊緣未達零度
  • ** Blackman **:主葉更窄, 更好的侧球壓抑, 失去更頻率的分辨率

選項總是取舍於頻率解析度(如何精确辨別頻率)和光谱漏漏(有多少能量流到鄰居的垃圾桶中)。 沒有完美的窗戶 這是不确定性原理的后果.

FFT住的地方

您與 FFT 的結果經常交換:

  • ** MP3 和 AAC 壓縮** : 將音效轉換成頻率域, 丟棄聽力阈值以下的頻率, 壓縮剩下的。 轉換是失去音效壓縮的全部基础.
  • ** JPEG 壓縮 **: 2D 版本( DCT) 將 8x8 像素區塊轉換成頻率域, 将高頻元件量化 。 所以JPEG的藝術品才會出現在街頭上.
  • ** WiFi 和 5G **: OFDM 編碼在很多頻率子卡路里分割資料。 FFT 在時域傳輸與頻域數據符號之間轉換 .
  • MRI成像:磁共振掃瞄器的原始信號在頻率空間。 反向 FFT 重建空間影像 。 從字面上看,你見過的每一次核磁共振都是反向的Fourier轉變.
  • ** Shazam **: 計算光谱( FFT 過滑動視窗) 、 提取峰值、 符合數據庫的樣式 。 FFT是認出每首歌的第一步.

一個60歲的算法,在你口袋里, 每天跑數十億次.

工具:

試試看

開啟 PinePaper, 選擇 Spectrum 分析器產生器 。 生成方波. 看看那些酒吧,你會看到 奇怪的口琴掉到1/n。 切換成锯牙, 切換到噪音——平整光谱,每一個頻率都一樣可能.

改變視窗功能 。 看著漢恩如何以更大的峰值來平滑光谱 切換到 Blackman ─ 更窄的山峰但下方的邊緣 .

你不是在看FFT 你在測量信號 觀察變化所揭示的 即知解之异.

參考

  • Brigham, E.O.(1988年)。 * 《快速變形》及其應用程序*。 普倫蒂斯·霍爾.
  • Cooley, J.W. & Tukey, J.W. (1965年)。 Fourier系列机器計算法 *算法 *,19(90),297-301.
  • Fourier, J. (1822年). * 沙勒河分析* 巴黎:菲爾明·迪多特.
  • Harris, F.J. (1978). 使用視窗與Discrete Fourier 變化的調谐分析 。 * IEEE的收益*,66(1),51-83.
  • Oppenheim, A.V. & Schafer, R.W.(2009年)。 * 第3版。 普倫蒂斯·霍爾.
  • Shannon, C.E.(1949年)。 在噪音的存在中的交流。 * IRE的收益*,37(1),10-21.
  • Smith, S.W.(1997年)。 * 科學家和工程師數位信號處理指南*。 加州技術出版社.
  • Wang, A.,等人(2003年)。 工業- Strength 音效搜尋算法 。 * 2003年ISMIR收益。 (Shazam的音效指紋算法)
  • 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