時頻域,從傅里葉變換談起


知乎: 如果看了這篇文章你還不懂傅里葉變換,那就過來掐死我吧

1. 復雜信號的組成

簡單信號的產生

2. 頻域的概念

從我們出生,我們看到的世界都以時間貫穿,股票的走勢、人的身高、汽車的軌跡都會隨着時間發生改變。這種以時間作為參照來觀察動態世界的方法我們稱其為時域分析。而我們也想當然的認為,世間萬物都在隨着時間不停的改變,並且永遠不會靜止下來。但如果我告訴你,用另一種方法來觀察世界的話,你會發現世界是永恆不變的,你會不會覺得我瘋了?我沒有瘋,這個靜止的世界就叫做頻域。

在你的理解中,一段音樂是什么呢?

這是我們對音樂最普遍的理解,一個隨着時間變化的震動。但我相信對於樂器小能手們來說,音樂更直觀的理解是這樣的:

是的,其實這一段寫到這里已經可以結束了。上圖是音樂在時域的樣子,而下圖則是音樂在頻域的樣子。所以頻域這一概念對大家都從不陌生,只是從來沒意識到而已。

現在我們可以回過頭來重新看看一開始那句痴人說夢般的話:世界是永恆的。

將以上兩圖簡化:

時域:

頻域:

你眼中看似落葉紛飛變化無常的世界,實際只是躺在上帝懷中一份早已譜好的樂章。
(眾人:雞湯滾出知乎!)

抱歉,這不是一句雞湯文,而是黑板上確鑿的公式:傅里葉同學告訴我們,任何周期函數,都可以看作是不同振幅,不同相位正弦波的疊加。在第一個例子里我們可以理解為,利用對不同琴鍵不同力度,不同時間點的敲擊,可以組合出任何一首樂曲。

而貫穿時域與頻域的方法之一,就是傳中說的傅里葉分析。傅里葉分析可分為傅里葉級數(Fourier Serie)和傅里葉變換(Fourier Transformation),我們從簡單的開始談起。

3. 傅里葉級數 (Fourier Series)

如果我說我能用前面說的正弦曲線波疊加出一個帶 90 度角的矩形波來,你會相信嗎?你不會,就像當年的我一樣。但是看看下圖:

  • 第一幅圖是一個郁悶的正弦波 cos(x)
  • 第二幅圖是 2 個賣萌的正弦波的疊加 cos(x)+a.cos(3x)
  • 第三幅圖是 4 個發春的正弦波的疊加
  • 第四幅圖是 10 個便秘的正弦波的疊加

隨着正弦波數量逐漸的增長,他們最終會疊加成一個標准的矩形,大家從中體會到了什么道理?(只要努力,彎的都能掰直!)

隨着疊加的遞增,所有正弦波中上升的部分逐漸讓原本緩慢增加的曲線不斷變陡,而所有正弦波中下降的部分又抵消了上升到最高處時繼續上升的部分使其變為水平線。一個矩形就這么疊加而成了。但是要多少個正弦波疊加起來才能形成一個標准 90 度角的矩形波呢?不幸的告訴大家,答案是無窮多個。

不僅僅是矩形,你能想到的任何波形都是可以如此方法用正弦波疊加起來的。這是沒有接觸過傅里葉分析的人在直覺上的第一個難點,但是一旦接受了這樣的設定,游戲就開始有意思起來了。

還是上圖的正弦波累加成矩形波,我們換一個角度來看看:

這里,不同頻率的正弦波我們成為頻率分量。

如果我們把第一個頻率最低的頻率分量看作 “1”,我們就有了構建頻域的最基本單元。

對於我們最常見的有理數軸,數字 “1” 就是有理數軸的基本單元。(好吧,數學稱法為——基。在那個年代,這個字還沒有其他奇怪的解釋,后面還有正交基這樣的詞匯我會說嗎?)

時域的基本單元就是 “1秒”,如果我們將一個角頻率為 ω 的正弦波 cos(ωt) 看作基礎,那么頻域的基本單元就是 ω

有了 “1”,還要有“0” 才能構成世界,那么頻域的 “0” 是什么呢? cos(0t) 就是一個周期無限長的正弦波,也就是一條直線!所以在頻域,0 頻率也被稱為直流分量,在傅里葉級數的疊加中,它僅僅影響全部波形相對於數軸整體向上或是向下而不改變波的形狀。

正弦波就是一個圓周運動在一條直線上的投影。所以頻域的基本單元也可以理解為一個始終在旋轉的圓

再清楚一點:

可以發現,在頻譜中,偶數項的振幅都是 0,也就對應了圖中的彩色直線。振幅為 0 的正弦波。

4. 傅里葉變換

信號,比如生活中一個聲音信號,整個波形是混亂看不出規律的。但是傅立葉就說,其實一個信號再怎么亂,也不過是由簡單波形的組合而來的,比如正弦波。高頻率,低頻率的正弦波,按不同比例調配起來能得到你最終要的那個混亂不堪的聲音信號(就是這么神奇)。聲音信號千千萬,只是取決於比例有千千萬。

這個信號混亂不堪,但是傅立葉說,其實可以用一個方法,分析出這個信號各個頻率的比例是多少的。

——傅立葉變換,就是這個方法了。

常用的傅里葉變換是把信號從時間/幅度平面轉換到頻率/幅度平面,另外還有一類分析方法時將其轉換到時間/頻率平面,稱為時頻分析,也可利用傅里葉變換的一種變形方法完成。

5. 行業應用

5.1. 頻率提取

比如,我檢測到一個信號是這樣的:

m=cos(x)+cos(10*x)+cos(50*x)+cos(100*x)+cos(500*x)+cos(1000*x);

這個信號里面包含了六個不同頻率的正弦波信號。那它看起來是怎樣的呢?

看到這樣的一個圖,你有信心從里面提取出什么關鍵的信息嗎?面對這種一團亂麻的波形圖,我們的內心是崩潰的。然而,現在對它做一下快速傅里葉變換,就得到這樣的頻域圖像:

很明顯就能看到,以pi軸為對稱軸(關於傅里葉變換的對稱性在這里就不多展開了),pi軸左邊和右邊分別有六個峰,完美的對應原函數里面六個不同的正弦頻率組合。這種提取在地震波信號分析、音頻處理等等常常是很好用的。

5.2. 降噪

比如你在錄音,麥克風質量不大好,始終有個固定的高頻電流聲(吱吱吱),於是最終的音頻文件記錄下來的信號就是你的聲音跟電流聲混在一起的那么一個信號。這個時候你就可以在電腦上用傅立葉來分析看看,過濾掉頻率過高的不可能是人發出的,然后提取出純粹的人聲。

數字圖片中,一個顏色有一個值,比如紅色跟藍色就是用不同值表示。你拍了一張藍天的照片,畫面基本就是藍的,但相機不大好,出現噪點,噪點是紅色的。把這張照片的像素從左到右從上到下一個個,類似柱狀圖那樣把顏色值表示出來,就變成了一個信號波形(Photoshop 有提供這功能),波形總體就是平緩的一個波形,因為都是差不多的顏色,顏色值差不遠。但就是有一個尖峰,尖峰其實就是那個紅色噪點。一個信號會出現尖峰,說明這個地方混入了高頻率信號。這時傅立葉分離高低頻率的能力就可以拿來圖片降噪了。

5.3. 去燥

有時候,我們需要對一個信號進行檢測,但是實際檢測的過程中會出現各種各樣的干擾(靜電干擾,噪聲干擾等等)。假設我們需要檢測的原始信號是這樣的:

但是這個信號受到了這樣一個高頻噪聲的干擾:

所以我們最后只能檢測到這樣的信號:

然而有了傅里葉變換,我們不會輕易的狗帶。對檢測到的信號做一下傅里葉變換,得到:

假設我們已經知道需要檢測的信號是比較低頻的,而干擾噪聲是高頻的。那么對得到的頻域信號進行低通濾波處理,得到:

也就是說我就只要低頻的信號,刪掉高頻的信號。對這個信號進行傅里葉反變換,得到:

可以看到通過傅里葉變換和反變換,從一個完全雜亂無章的信號里面,提取出了我們期望的低頻信號,而濾掉了高頻信號。

之前 @凌晨曉驥 所提到的是圖像去噪,屬於二維空間信號去噪,而在理論上傅里葉變換可以用於任意維度的時域或空間域信號的去噪,當然,實際應用中常見的還是一維和二維。其原理在於:信號中的有效成分(可認為是目標)和噪聲的頻率往往是不同的,在經過傅里葉變換之后,噪聲和目標分量在頻域上分別位於不同的頻率中,便於將其進行區分。

5.4. 邊緣提取

在圖像處理中還有一個很重要的題目就是邊緣提取,也可以利用傅里葉變換完成,這是由於邊緣區域的色彩變化通常較大,頻率較高,而非邊緣區域色彩變化平緩,頻率較低。

5.5. 濾波

顯而易見,只要信號的頻率不同,就可以分解出來。

實際上,任何對於信號的操作都屬於濾波,而只要是濾波就可以利用傅里葉變換實現

但是!(不錯,最后總是會有一個但是!),傅里葉變換只是理論上的最優,它需要無限的信號長度才能准確的得到其中各個分量的頻率,而在實際應用中,信號的長度始終是有限的,所以需要使用其他針對有限長度信號的變換方式對其頻域進行提取。另一方面,由於目前大部分信號處理都是通過數字信號完成的,受到采樣頻率和奈奎斯特采樣定律的限制,不可能得到信號所有的頻率分量。

6. 快速傅里葉變換(Fast Fourier Transform, FFT)

離散傅里葉變換(Discrete Fourier Transform, DFT)是數字信號處理最重要的基石之一,也是對信號進行分析和處理時最常用的工具之一。在200多年前法國數學家、物理學家傅里葉提出后來以他名字命名的傅里葉級數之后,用DFT這個工具來分析信號就已經為人們所知。但在很長時間內,這種分析方法並沒有引起更多的重視,最主要的原因在於這種方法運算量比較大。

快速傅里葉變換(Fast Fourier Transform, FFT)是1965年由庫利(T.W.Cooley)和圖基(J.W.Tukey)共同提出的一種快速計算DFT的方法。這種方法充分利用了DFT運算中的對稱性和周期性,從而將DFT運算量從N2減少到 N*log2N 。當N比較小時,FFT優勢並不明顯。但當N大於32開始,點數越大,FFT對運算量的改善越明顯。比如當N為1024時,FFT的運算效率比DFT提高了100倍。

在庫利和圖基提出的FFT算法中,其基本原理是先將一個N點時域序列的DFT分解為N個1點序列的DFT,然后將這樣計算出來的N個1點序列DFT的結果進行組合,得到最初的N點時域序列的DFT值。實際上,這種基本的思想很早就由德國偉大的數學家高斯提出過,只是由於當時尚欠東風——計算機還沒發明。在20世紀60年代,伴隨着計算機的發展和成熟,庫利和圖基的成果掀起了數字信號處理的革命,因而FFT發明者的桂冠才落在他們頭上。

7. 理解變換

類比:向量可以通過代數來表示,代數A(2,1)也可以還原(逆變換)為向量。

時域信號,通過傅立葉變換,輸出為:

  1. 一系列的頻率
  2. 每個頻率下的振幅
  3. 每個頻率的相位

7.1. 傅里葉變換的分類

模擬信號:

  • (連續)傅里葉級數(Fourier Series,CFS)

    實現了時域與頻率的變換過程。

但是!它只能處理周期性函數,適用於連續周期信號。而現實中的信號,多是無周期的函數:

  • (連續)傅立葉變換(Fourier Transform,FT)

    比如衰減指數曲線和高斯曲線。

但是,計算機只能處理數字信號,首先需要將原模擬信號在時域離散化

  • 離散時間傅立葉變換(Discrete Time Fourier Transform,DTFT)

注意:此時時域是離散的,而頻域依然是連續的

經過上面兩個步驟,我們得到的信號依然不能被計算機處理,因為頻域既連續,又周期。我們自然就想到,既然時域可以采樣,為什么頻域不能采樣呢?這樣不就時域與頻域都離散化了嗎?沒錯,接下來對頻域在進行采樣。

  • 離散傅立葉變換(Discrete Fourier Transform,DFT)

    用於處理離散周期信號,也是最早的研究方向。

FFT呢?FFT的提出完全是為了快速計算DFT而已,它的本質就是DFT!我們常用的信號處理軟件MATLAB或者DSP軟件包中,包含的算法都是FFT而非DFT。

對於離散序列的z變換,如果將z用exp(j*數字角頻) 做變量替換,則z變換退化為DTFT。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM