歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 深入淺出的講解傅裡葉變換

深入淺出的講解傅裡葉變換

日期:2017/3/3 14:13:23   编辑:Linux技術

文章來自:http://www.elecfans.com/engineer/blog/20140527344277.html

我保證這篇文章和你以前看過的所有文章都不同,這是12年還在果殼的時候寫的,但是當時沒有來得及寫完就出國了……於是拖了兩年,嗯,我是拖延症患者……

這篇文章的核心思想就是:

要讓讀者在不看任何數學公式的情況下理解傅裡葉分析。

傅裡葉分析不僅僅是一個數學工具,更是一種可以徹底顛覆一個人以前世界觀的思維模式。但不幸的是,傅裡葉分析的公式看起來太復雜了,所以很多大一新生上來就懵圈並從此對它深惡痛絕。老實說,這麼有意思的東西居然成了大學裡的殺手課程,不得不歸咎於編教材的人實在是太嚴肅了。(您把教材寫得好玩一點會死嗎?會死嗎?)所以我一直想寫一個有意思的文章來解釋傅裡葉分析,有可能的話高中生都能看懂的那種。所以,不管讀到這裡的您從事何種工作,我保證您都能看懂,並且一定將體會到通過傅裡葉分析看到世界另一個樣子時的快感。至於對於已經有一定基礎的朋友,也希望不要看到會的地方就急忙往後翻,仔細讀一定會有新的發現。

————以上是定場詩————

下面進入正題:

抱歉,還是要啰嗦一句:其實學習本來就不是易事,我寫這篇文章的初衷也是希望大家學習起來更加輕松,充滿樂趣。但是千萬!千萬不要把這篇文章收藏起來,或是存下地址,心裡想著:以後有時間再看。這樣的例子太多了,也許幾年後你都沒有再打開這個頁面。無論如何,耐下心,讀下去。這篇文章要比讀課本要輕松、開心得多……

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

先舉一個公式上並非很恰當,但意義上再貼切不過的例子:

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

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

好的!下課,同學們再見。

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

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

將以上兩圖簡化:

時域:

頻域:

在時域,我們觀察到鋼琴的琴弦一會上一會下的擺動,就如同一支股票的走勢;而在頻域,只有那一個永恆的音符。

所(前方高能!~~~~~~~~~~~非戰斗人員退散~~~~~~~)

以(~~~~~~~~~~~~~~~前方高能預警~~~~~~~~~~~~~~前方高能~~~~~~~~)

你眼中看似落葉紛飛變化無常的世界,實際只是躺在上帝懷中一份早已譜好的樂章。

(眾人:雞湯滾出知乎!)

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

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

二、傅裡葉級數(Fourier Series)

還是舉個栗子並且有圖有真相才好理解。

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

第一幅圖是一個郁悶的正弦波cos(x)

第二幅圖是2個賣萌的正弦波的疊加cos(x)+a.cos(3x)

第三幅圖是4個發春的正弦波的疊加

第四幅圖是10個便秘的正弦波的疊加

隨著正弦波數量逐漸的增長,他們最終會疊加成一個標准的矩形,大家從中體會到了什麼道理?

(只要努力,彎的都能掰直!)

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

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

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

在這幾幅圖中,最前面黑色的線就是所有正弦波疊加而成的總和,也就是越來越接近矩形波的那個圖形。而後面依不同顏色排列而成的正弦波就是組合為矩形波的各個分量。這些正弦波按照頻率從低到高從前向後排列開來,而每一個波的振幅都是不同的。一定有細心的讀者發現了,每兩個正弦波之間都還有一條直線,那並不是分割線,而是振幅為0的正弦波!也就是說,為了組成特殊的曲線,有些正弦波成分是不需要的。

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

好了,關鍵的地方來了!!

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

對於我們最常見的有理數軸,數字“1”就是有理數軸的基本單元。

(好吧,數學稱法為——基。在那個年代,這個字還沒有其他奇怪的解釋,後面還有正交基這樣的詞匯我會說嗎?)

時域的基本單元就是“1秒”,如果我們將一個角頻率為

的正弦波cos(

t)看作基礎,那麼頻域的基本單元就是

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

接下來,讓我們回到初中,回憶一下已經死去的八戒,啊不,已經死去的老師是怎麼定義正弦波的吧。

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

介紹完了頻域的基本組成單元,我們就可以看一看一個矩形波,在頻域裡的另一個模樣了:

這是什麼奇怪的東西?

這就是矩形波在頻域的樣子,是不是完全認不出來了?教科書一般就給到這裡然後留給了讀者無窮的遐想,以及無窮的吐槽,其實教科書只要補一張圖就足夠了:頻域圖像,也就是俗稱的頻譜,就是——

再清楚一點:

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

動圖請戳:

File:Fourier series and transform.gif老實說,在我學傅裡葉變換時,維基的這個圖還沒有出現,那時我就想到了這種表達方法,而且,後面還會加入維基沒有表示出來的另一個譜——相位譜。

但是在講相位譜之前,我們先回顧一下剛剛的這個例子究竟意味著什麼。記得前面說過的那句“世界是靜止的”嗎?估計好多人對這句話都已經吐槽半天了。想象一下,世界上每一個看似混亂的表象,實際都是一條時間軸上不規則的曲線,但實際這些曲線都是由這些無窮無盡的正弦波組成。我們看似不規律的事情反而是規律的正弦波在時域上的投影,而正弦波又是一個旋轉的圓在直線上的投影。那麼你的腦海中會產生一個什麼畫面呢?

我們眼中的世界就像皮影戲的大幕布,幕布的後面有無數的齒輪,大齒輪帶動小齒輪,小齒輪再帶動更小的。在最外面的小齒輪上有一個小人——那就是我們自己。我們只看到這個小人毫無規律的在幕布前表演,卻無法預測他下一步會去哪。而幕布後面的齒輪卻永遠一直那樣不停的旋轉,永不停歇。這樣說來有些宿命論的感覺。說實話,這種對人生的描繪是我一個朋友在我們都是高中生的時候感歎的,當時想想似懂非懂,直到有一天我學到了傅裡葉級數……

抱歉,還是沒寫完。但是我想堅持看到這裡的人已經很不容易了。我們都休息一下,下一講再繼續……

深入淺出的講解傅裡葉變換(2)

上一篇文章發出來之後,為了掐死我,大家真是很下工夫啊,有拿給姐姐看的,有拿給妹妹看的,還有拿給女朋友看的,就是為了聽到一句“完全看不懂啊”。幸虧我留了個心眼,不然就真的像標題配圖那樣了。我的文章題目是,如果看了這篇文章你“還”不懂就過來掐死我,潛台詞就是在你學了,但是沒學明白的情況下看了還是不懂,才過來掐死我。另外,想跟很多人抱歉,因為評論太多了,時間有限,不能給每個人回復,還望大家諒解。但是很感謝一直在評論區幫忙解答讀者問題的各位,就不一一@了。

這裡鄭重感謝大連海事大學的吳楠老師,一位學識淵博、備課缜密、但授課不拘一格的年輕教師!當時大三他教我通信原理,但是他先用了4結課幫我們復習了很多信號與系統的基本概念,那個用樂譜代表頻域的概念就是他講的,一下子讓我對這門課豁然開朗,才有了今天的這篇文章。

————————————今天的定場詩有點長——————————

下面繼續開始我們無節操的旅程:

上次的關鍵詞是:從側面看。這次的關鍵詞是:從下面看。

在第二課最開始,我想先回答很多人的一個問題:傅裡葉分析究竟是干什麼用的?這段相對比較枯燥,已經知道了的同學可以直接跳到下一個分割線。

先說一個最直接的用途。無論聽廣播還是看電視,我們一定對一個詞不陌生——頻道。頻道頻道,就是頻率的通道,不同的頻道就是將不同的頻率作為一個通道來進行信息傳輸。下面大家嘗試一件事:

先在紙上畫一個sin(x),不一定標准,意思差不多就行。不是很難吧。

好,接下去畫一個sin(3x)+sin(5x)的圖形。

別說標准不標准了,曲線什麼時候上升什麼時候下降你都不一定畫的對吧?

好,畫不出來不要緊,我把sin(3x)+sin(5x)的曲線給你,但是前提是你不知道這個曲線的方程式,現在需要你把sin(5x)給我從圖裡拿出去,看看剩下的是什麼。這基本是不可能做到的。

但是在頻域呢?則簡單的很,無非就是幾條豎線而已。

所以很多在時域看似不可能做到的數學操作,在頻域相反很容易。這就是需要傅裡葉變換的地方。尤其是從某條曲線中去除一些特定的頻率成分,這在工程上稱為濾波,是信號處理最重要的概念之一,只有在頻域才能輕松的做到。

再說一個更重要,但是稍微復雜一點的用途——求解微分方程。(這段有點難度,看不懂的可以直接跳過這段)微分方程的重要性不用我過多介紹了。各行各業都用的到。但是求解微分方程卻是一件相當麻煩的事情。因為除了要計算加減乘除,還要計算微分積分。而傅裡葉變換則可以讓微分和積分在頻域中變為乘法和除法,大學數學瞬間變小學算術有沒有。

傅裡葉分析當然還有其他更重要的用途,我們隨著講隨著提。

————————————————————————————————————

下面我們繼續說相位譜:

通過時域到頻域的變換,我們得到了一個從側面看的頻譜,但是這個頻譜並沒有包含時域中全部的信息。因為頻譜只代表每一個對應的正弦波的振幅是多少,而沒有提到相位。基礎的正弦波A.sin(wt+θ)中,振幅,頻率,相位缺一不可,不同相位決定了波的位置,所以對於頻域分析,僅僅有頻譜(振幅譜)是不夠的,我們還需要一個相位譜。那麼這個相位譜在哪呢?我們看下圖,這次為了避免圖片太混論,我們用7個波疊加的圖。

鑒於正弦波是周期的,我們需要設定一個用來標記正弦波位置的東西。在圖中就是那些小紅點。小紅點是距離頻率軸最近的波峰,而這個波峰所處的位置離頻率軸有多遠呢?為了看的更清楚,我們將紅色的點投影到下平面,投影點我們用粉色點來表示。當然,這些粉色的點只標注了波峰距離頻率軸的距離,並不是相位。

這裡需要糾正一個概念:時間差並不是相位差。如果將全部周期看作2Pi或者360度的話,相位差則是時間差在一個周期中所占的比例。我們將時間差除周期再乘2Pi,就得到了相位差。

在完整的立體圖中,我們將投影得到的時間差依次除以所在頻率的周期,就得到了最下面的相位譜。所以,頻譜是從側面看,相位譜是從下面看。下次偷看女生裙底被發現的話,可以告訴她:“對不起,我只是想看看你的相位譜。”

注意到,相位譜中的相位除了0,就是Pi。因為cos(t+Pi)=-cos(t),所以實際上相位為Pi的波只是上下翻轉了而已。對於周期方波的傅裡葉級數,這樣的相位譜已經是很簡單的了。另外值得注意的是,由於cos(t+2Pi)=cos(t),所以相位差是周期的,pi和3pi,5pi,7pi都是相同的相位。人為定義相位譜的值域為(-pi,pi],所以圖中的相位差均為Pi。

最後來一張大集合:

好了,你是不是覺得我們已經講完傅裡葉級數了?

抱歉讓你失望了,以上我們講解的只是傅裡葉級數的三角函數形式。接下去才是最究極的傅裡葉級數——指數形式傅裡葉級數。但是為了能更好的理解指數形式的傅裡葉級數,我們還需要一個工具來幫忙——歐拉公式。

歐拉公式,以及指數形式的傅裡葉級數,我們下一講再講。謝謝大家(鞠躬)。

—————————————————————————————————————

今天講的部分不多,但是我希望大家能夠理解,我也有自己的生活,留給知乎的時間並不多,但是我很喜歡在知乎與別人交流的過程。上一次的那些文章大家知道我當時寫了多久麼?四天,每天寫6小時那種,而且當時還是在假期。主要是圖太不好做了,有人問到作圖的方法,其實就是簡單的MATLAB+PHOTOSHOP,作圖的確是很費時間,但是我相信做出這些圖是值得的,因為我相信圖一定比文字更好理解。也希望可以將這些自己學習時的感受和經驗更完整的分享給需要的人。

所以請大家稍微有點耐心,我會認真把這個故事講完。也謝謝大家的理解和支持。

Copyright © Linux教程網 All Rights Reserved