傅立葉變換
# 傅立葉變換 (Fourier Transform)
這一篇文稿,有很多想法和內容參考了 betterexplained.com 的網頁[1],另外模擬程式也參考了 kazad 的程式碼[2] 以及 quantblog.wordpress.com 的程式碼[3] 做進一步的修改而成,就先在此一併說明。感謝有這些資源,讓我可以進一步拿來改寫,希望對於初學者,尤其不太喜歡讀英文的,能夠有一點點幫助。
傅立葉變換在理工的領域常常被提到,那麼到底它是什麼東西呢?簡而言之,它可以用來告訴我們:在時間訊號裡面,到底躲藏了哪些頻率的訊號在裡面。反過來,如果知道各種頻率成份,那麼組合起來的時間訊號又是長怎麼樣的。我們一起來學習吧!
首先,如果一個點在圓週上做等速運動,那麼它在 X 軸或 Y 軸上的投影,其大小和時間的關係會是一個弦波,如下面的圖示:
這邊,Y 軸上的投影大小會變成 sin 函數(紅色),而 X 軸的投影大小就是 cos 函數(綠色)。我們在下面的討論,基本上會使用 X 軸的投影。
我們會用來做講解的程式,是從 betterexplained.com (opens new window) 所提供的線上程式,像下面這樣:
那我把這個程式稍微做了一些改寫,在之後的頁面讀者會看到有一些差別,不過基本的功能是一樣的。
以下先說明這個模擬程式的基本功能,然後再進行我們的說明。
- 左上角的 Cycles:輸入的數字表示頻率為 0Hz, 1Hz, 2Hz... 的振幅,例如輸入
1 -1
,表示頻率 0Hz (直流) 的振幅為 1,頻率 1Hz 的振幅為 -1,以此類推。也可以輸入起始的角度,例如輸入0 1:90
,表示沒有直流成分,而頻率 1Hz 的振幅為為 1,起始角度為 90 度。圖中左方會顯示每個不同頻率訊號旋轉的狀況,以綠色小點表示。 - 右上角的 Time:輸入的數字表示取樣時間點的值,基本上假設輸入 n 個數,則會有 n 個時間取樣點,其中每隔 1/n 秒取樣一次,每經過 1 秒視為重覆取樣。圖中央右方會顯示每個取樣點的值,以橘色小點表示。
- 右上角的取樣值,實際意義為左上角所有頻率成份加總結果的水平值,也就是把所有綠色小點加總之後,將其投影在 X 軸上的實數值。在輸入左上角或右上角時,另一邊也會跟著改變,使得兩邊的訊號可以對應起來。
- 下面的按鈕:
- Total: 是否顯示加總的訊號。
- Parts: 是否顯示各成份訊號。
- Ticks: 是否顯示取樣時間點格線。
- Derive: 這部份比較複雜,最後再詳說。
- Running: 點擊時圖形會暫停或繼續執行,也可以直接點選整個圖形。暫停之後會出現捲動棒,此時可以用滑鼠或鍵盤左右鍵來移動時間點。
- 傅立葉人像圖: 點擊時圖形背景會改變顏色。
練習
請讀者先隨便玩一玩,大致熟悉之後再進到下一頁。
Better Explained, An Interactive Guide To The Fourier Transform (opens new window) ↩︎
https://gist.github.com/kazad/8bb682da198db597558c ↩︎
http://treeblurb.com/dev_math/sin_canv00.html ↩︎