科普:傅立葉變換的簡易指南

2021-02-08 物聯網智庫

摘要:傅立葉變換是有史以來最重要的發現之一。不幸的是,由於其公式的複雜,大部分人並不能理解其含義。


那麼,拋開枯燥難懂的數學符號,讓我們用一種新方法來試著理解。這是一個純中文的闡述:

然後,類似於「數學-中文」模式:

現在要上公式了?當然不是!讓我們自己動手,進行一次生動的模擬。

要是一切順利的話,你會驚奇的發現,你已經直觀的明白了為什麼傅立葉變換能夠實現。我們用下列步驟替代了所有的數學分析。

這並不是一次緊張的實驗,而是一次舒心的體驗。讓我們開始吧!


由慕斯得到配方

數學變換的實質是變量關係的改變。根據所算之物,把我們對數量的認知從「單一物體」(沙裡的線條,計數系統)變成「許多10」(小數)。遊戲得分?繼續計數。乘法?拜託,是小數。

傅立葉變換把我們的視角由消費者變成了生產者,從「我看到了什麼?」變成「這是怎麼發生的?」。

換句話說:拿一個慕斯,我們要找出它的配方。

為什麼呢?好吧,配方是飲料的最佳描述。你並不會跟人一滴一滴分析飲料,只會說「我有一杯橘子或是香蕉慕斯」。配方比事物本身更易於歸類、比對和定義。

那麼……拿一杯慕斯,到底怎麼找到配方呢?

嗯,想像一下你周圍有很多過濾器(濾波器):

把慕斯倒進「香蕉」過濾器(濾波器)裡。提取出了1盎司香蕉。

倒進「橘子」過濾器(濾波器)裡。提取出了2盎司橘子。

倒進「牛奶」過濾器(濾波器)裡。提取出了3盎司牛奶。

倒進「水」過濾器(濾波器)裡。提取出了3盎司水。

我們可以通過混合每種成分得到原先的慕斯。懂了麼?

過濾器(濾波器)必須是相互獨立的。香蕉過濾器(濾波器)只濾出香蕉,沒有其它的任何成分。再多的橘子也不能影響香蕉的讀數。

過濾(濾波)必須是徹底的。如果我們遺漏了一個過濾器(濾波器),就永遠也得不到真正的配方(天哪!那還有個芒果過濾器(濾波器)!)。我們的過濾器(濾波器)必須能確定每種成分的含量。

不同成分之間必須是可合成的。慕斯必須能被分離並重製(餅乾?沒那麼誇張。誰有想要一堆碎屑呢?).不同成分在分離和結合的時候必須是線性的。


周期看世界

傅立葉變換持有一種特別的觀點:要是每一種信號都是周期性的呢(周期性重複)?

哇塞。這個假設太讓人著迷了,可憐的約瑟夫·傅立葉首先提出了這個假設。(現實裡約瑟夫,樓梯能做成環狀的麼?)

忽略數學界持續數十年的爭論,我們希望學生們可以直觀的理解這個概念。額……讓我們略過直觀的部分。

就像我們分析慕斯成分一樣,傅立葉變換可以分析出信號的成分:

完成。這就是大部分教程要教給你的東西。別被嚇到了;想想這個例子「天哪,過五關斬六將,我們終於得到原始碼(DNA)了」。

要是地震波(不同強度和速度的震動)能被分離成幾種成分,建築就能被設計成免於地震威脅的高強度結構。

要是聲波(高低不同的頻率)能被分成幾種成分,我們就能增強想要的部分,削弱不想要的部分。隨機噪聲引起的噼啪聲可以被濾除。相似的「聲譜」可以被比對(音樂識別服務比對的是聲譜而不是原始音頻)。

要是電腦數據能被周期性的描述,那些不重要的信息就能被濾除。這種「有損壓縮」可以急劇減小文件的大小(這就是為什麼JPEG和MP3文件要比原始的.bmp或.wav文件要小得多的原因)。

要是我們的信號是無線電波,我們可以通過濾波器來聽確定的頻段。在慕斯的世界裡,想像每個人都注意著不同的成分:亞當在尋找蘋果,鮑勃在尋找香蕉,查理想要花椰菜(兄弟,對不住了)。

傅立葉變換在工程領域運用廣泛,但事實上,它是個尋找現象根源的象徵。


多想想周期信號,而不是正弦曲線

我最大的困惑在於「正弦曲線」和「周期信號」的定義區分。

把一個周期的路徑稱作一個「完整正弦曲線」,就像你把一個諺語叫做「漢字的集合」。你選擇了錯誤的細節級別。諺語包含了複雜的含義,而不是可以拆分的漢字!

傅立葉變換是關於周期(不是含有一個D形的正弦曲線)和歐拉公式的變換:

我們必須用虛數做周期運動麼?當然不。即使那麼做既方便又簡潔。我們把信號分成實數和虛數的部分,但別忘了前提是:我們在做周期運動。


沿著周期路徑

我們一邊用電話聊天,一邊在腦海裡畫圓(你答應了的!)。我該說什麼呢?

我可以說「2英寸,起始於45度,1圈兒每秒,開始吧!」。半秒之後,我們應該到達了同一點:起始位置+經過角度=45+180=225度(2英寸半徑)。

每個圓周路徑都需要設定大小、速度和起始角度(幅度/周期/相位)。我們還可以把它們合到一塊:想像用不同速度繞圈兒跑的小摩託車。

所有周期的位置信息加到一起就是原本的信號,一如所有的成分混合就得到了原本的慕斯一樣。

周期的時間順序顯示,開始於0Hz。周期[0 1]的含義是

現在是棘手的部分:

然後呢?[0 1]是1Hz周期.

現在加入2Hz周期,併疊加。[0 1 1]意味著「0Hz值為零,1Hz時值為1,2Hz時值為1」。

哇塞。我們的小摩託車越跑越快了:綠線代表了1Hz和2Hz,藍線是疊加後結果。點選綠色複選框可以讓結果看起來更清晰。混合好的「味道」是一個傾斜的函數,從最大值開始,降到最低值。

黃點是我們測量信號的時刻。已經確定了3個周期信號(0Hz, 1Hz, 2Hz),每個點為信號值的1/3.在這個例子裡,周期[0 1 1]生成了時間量[2 -1 -1],從最大值(2)開始,然後降到最低(-1).

哦!剛才忘了考慮相位角了,現在我們要把它加上!加上數值:相位角。[0 1:45]是從45度開始的,1Hz的周期函數。

它是[0 1]的進階版本。時域上,我們用[.7 -.7]替換[1 -1]。因為我們的周期函數並不是沿著我們的測量時方向上,它們是還在運動的點(這是可被設置的)。

通過改變周期信號的頻率,強度和相位,傅立葉變換可以匹配任何時域信號。

信號所謂「時域觀測」或是「頻域成分」已成為一種抽象的概念。

說夠了,就讓我們把它講明白吧!你可以選擇模擬器裡任何時間或類型的周期函數。如果它是時間表示的,你看到的許多構成所要周期函數的點(其集合被稱為波)。

但是——難道在黃色的時間間隔裡不包括任何特殊的點麼?當然包括。但是我們怎麼知道沒有測量的時候,信號是按照直線,曲線還是折線穿入另一象限呢?它在我們所需的等間隔時刻出現在我們希望的位置。


創造一個脈衝信號

我們可以用周期函數製造出一個脈衝信號麼,像是(4 0 0 0)?(用括號表示時間點)

儘管脈衝看起來很煩人(難道只是煩人?),還是要考慮周期函數的複雜性。我們的周期成分必須對齊(最大值為4),然後向外傳播,每個周期函數都有其它函數可與其抵消。每個顯示為0的點,都是因為多個周期函數在此獲得平衡(你並不能關掉某個函數)。

讓我們看看每個時間點:

在0時刻,每個周期函數都處於最大值,(4???)由4個周期函數(0Hz 1Hz 2Hz 3Hz)疊加而成,每個函數的幅值都是1,而相位角都為0(換言之, 1 + 1 + 1 + 1 = 4)。

在之後的時刻(t = 1, 2, 3),所有周期函數的幅值必須相互抵消。

下面是數值為0的秘訣:當周期函數的值處於對稱軸的兩端(南和北,東和西,等等。),它們的和為0(要是3個周期函數均勻的分布在0,120和240度,它們就能相互抵消)。

想像許多繞圈旋轉的點。先面試每個點在每個時刻的位置:

時刻 0 1 2 3

--

0Hz:0 0 0 0

1Hz:0 1 2 3

2Hz:0 2 0 2

3Hz:0 3 2 1

要注意,3Hz的周期信號從0開始,然後到了3,然後到了6(只有4個位置,6Mod,然後是9(9Mod4=1)。

每個周期長度為4個單位,周期函數在2個單位時的位置既不在一條線上(不同於0, 4, 8…),也不再相反的位置(不同於2, 6, 10…)。

好了。讓我們看看每個時間點的情況:

時刻 0:所有的周期函數都處於最大值(其和為4)

時刻 1:1Hz和3Hz函數值相互抵消(位置1和3是相反的值),0Hz和2Hz函數值相互抵消。最後結果為0.

時刻 2:在0時刻,1Hz和3Hz函數值相等,在2時刻,0Hz和2Hz函數值相等(相反的值)。相加結果還是0.

時刻 3:0Hz和2Hz函數值相互抵消.1Hz和3Hz函數值相互抵消.

時刻4(重複時刻0的情況):所有函數值相等。

秘訣在於讓相互獨立的函數相互抵消(0Hz 和 2Hz, 1Hz 和 3Hz),或是讓同方向上數值和相互抵消(0Hz + 2Hz 和 1Hz + 3Hz)。

當每個周期屬性相等,相位為0時,就可以對齊並消去後面的值。(我並不能很好的證明這一點——有人能嗎?——但你可以自己看到其發生。試試[1 1], [1 1 1], [1 1 1 1],你會注意到一個脈衝波峰:(2 0), (3 0 0), (4 0 0 0)).

這裡直觀的顯示了怎麼對齊,接下來是消去相反值:


改變峰值時間

t=0時,什麼都沒有發生。接下來換到(0 4 0 0)?

應該和(4 0 0 0)看起來差不多,但是周期函數必須在t=1時(當前時刻的1s後)對齊。然後要考慮相位。

想像有4個人參與的賽跑。賽跑開始時,4個人都在起跑線上,(4 0 0 0)。沒意思。

怎麼能讓每個人都同時到達終點呢?很簡單。只要讓他們不停的你追我趕就行了。也許奶奶在終點線前兩英尺,Usain Bolt離線還有100米,他們可以拉著手一起穿過終點線。

相位變化,起始角度就是周期信號世界裡的延遲。接下來要說怎麼調整起始位置,來者每個周期都延遲1秒:

0Hz周期函數不發生移動,所以它已經對齊了

1Hz函數在4秒完成一次往復,所有延時一秒意味著1/4輪。相位延遲90度(-90),然後它在t=1時刻到達相位0,其最大值。

2Hz函數的變化速度是1Hz函數的兩倍,所以要兩倍的角度來滿足要求(-180或180,分別沿著不同的方向)。

3Hz函數的速度是1Hz函數的3倍,所以要有3倍的移動距離(-270或90度的相位改變)

如果時間點(4 0 0 0)是由函數[1 1 1 1]產生,那麼(0 4 0 0)則是由[1 1:-90 1:180 1:90]產生。( 注意: 此處用1Hz來表示一個周期運動經過的時間)。

天吶——我們在腦子裡算出了周期函數!

幹擾可視化是與之類似的,除了要在t=1時刻進行對齊。

試一下這個:你能想像出(0 0 4 0),即2秒延時時候的情況麼?0Hz沒有相位。1Hz是180度,2Hz是360度(也就是0度),3Hz是540度(即180度),結果為[1 1:180 1 1:180].


完整的傅立葉變換

事實上:我們的信號只不過是一大堆脈衝信號的疊加!只要得到每個時刻組分,你就能知道整個信號的成分。

傅立葉變換通過頻率得到「配方」:

把連續的信號(a b c d)分成不同的時刻:(a 0 0 0) (0 b 0 0) (0 0 c 0) (0 0 0 d)

任意頻率(例如2Hz),試驗配方是「a/4 + b/4 + c/4 + d/4"(每個尖峰的強度被除以頻率數目)

等等!還要對每個脈衝設置延時(每一秒延時的角度取決於頻率)。

每個頻率真正的配方=a/4 (無延時) + b/4 (1秒延時) + c/4 (2秒延時) + d/4 (3秒延時)。

遍歷每個頻率就能得到完整的變換結果。

這就是從「數學文字」到真正數學的過程:

幾個要點:

N=時間樣本的數量

n=當前運算的樣本編號(0 .. N-1)

xn=n時刻信號值

k=當前頻率(0Hz到N-1Hz)

Xk=信號中頻率k的值(幅度和相位,一個複數)

1/N被用於反變換(從時域信號轉化為頻域信號)。這是可以實現的,儘管我更喜歡用1/N進行正變換,它表示了脈衝信號的正真大小。你也在變換過程(正反變換中仍含有1/N)中使用1/sqrt(N)。

n/N是我們經過的時間比例。2πk是單位為弧度/秒的速度,e^-ix是反向經過的路徑。合起來就是以當前時間和速度經過的實際路程。

傅立葉變換的原始方程只告訴你「加上複數」。很多變成語言並不支持直接使用複數,因此要把它們轉化成直角坐標系,然後相加。


讓我們開始吧

這是我遇到的最有挑戰性的課題。傅立葉變換涵蓋了幾個要點(離散/連續/有限長/無限長)的高深數學(狄拉克δ函數),很容易遺漏掉一些細節。這真的很挑戰我的認知。

但仍有簡單的類比來說明這些——我拒絕用別的方式思考。無論是慕斯還是Usain Bolt & Granny穿過終點線,都能讓我們輕易的理解這一點。這個比喻是有缺陷的,但不算壞:它是一個木筏使用,一旦我們過河就把它們留下。

我意識到我自己的理解是如何薄弱,我沒辦法在自己的腦海裡想出(1 0 0 0 )的變換。對我來說,就像,我懂加法。但是,「1+1+1+1」到底等於幾呢?為什麼不呢?難道這些最簡單的運算不該有個直觀的展示麼?


特別推薦1:

英維塔】微信號:envitas

英維塔是物聯網智庫的運營團隊,我們是一群痴迷於新技術的理工與文藝「混血兒」。

這個帳號每天都會更新發布新鮮內容呦,時不時還會埋藏個把禮物寶藏,想嘗鮮的話就每天來玩吧!

特別推薦2:

全民領導力】微信號:Klemmerchina

全民領導力發展中心以「造就勇敢正直和品德高尚的領袖,共同創造適合每個人且沒有人被遺棄的世界」為經營使命,將在未來3年支持和造就3000學員成為卓越領導人,引領和組織更多的參與者為社會公益事業和為實現中國夢做出卓越貢獻。關注全民領導力微信號,可每天收穫【克萊默領導力52課】電子書及獎學金支持。

更多觀點,更多精彩!如喜歡本文,可關注物聯網智庫官方微信,閱讀更多原創內容。


相關焦點

  • 高階技能學習,傅立葉變換的簡易指南
    關於傅立葉變換,無論是書本還是在網上可以很容易找到關於傅立葉變換的描述,但是大都是些故弄玄虛的文章,太過抽象,儘是一些讓人看了就望而生畏的公式的羅列
  • 為什麼要進行傅立葉變換?傅立葉變換究竟有何意義?如何用Matlab實現快速傅立葉變換
    要理解傅立葉變換,確實需要一定的耐心,別一下子想著傅立葉變換是怎麼變換的,當然,也需要一定的高等數學基礎,最基本的是級數變換,其中傅立葉級數變換是傅立葉變換的基礎公式。二、傅立葉變換的提出讓我們先看看為什麼會有傅立葉變換?
  • 為什麼要進行傅立葉變換?傅立葉變換究竟有何意義?
    要理解傅立葉變換,確實需要一定的耐心,別一下子想著傅立葉變換是怎麼變換的,當然,也需要一定的高等數學基礎,最基本的是級數變換,其中傅立葉級數變換是傅立葉變換的基礎公式。二、傅立葉變換的提出讓我們先看看為什麼會有傅立葉變換?
  • MRI基礎——傅立葉變換
    雖然傅立葉變換是誕生於熱學,但是到了計算機時代,人們發現,這個公式可以用來表示分析信號的成分,也可用這些成分合成信號。一下子,傅立葉變換的重要性就立馬凸顯了起來。  傅立葉變換對大多數影像工作者來說是很神秘的。雖然傅立葉的數學過程非常複雜,但他的概念非常容易掌握。簡單來說把:傅立葉變換提供的是一個信號的頻率範圍。
  • 什麼是傅立葉變換?
    傅立葉變換學了有些年頭,可是一直沒有求甚解。如果有人問我,我只能寫出個數學變換的式子,高深莫測一番,生怕追問下去。這樣做,本質上就好像有人問「什麼是光」,答曰「從燈泡裡出來的東西」一樣,看似回答了,卻不得要領。因此,我寫下這篇短文,試圖通過圖像來理解傅立葉變換。首先要問,為什麼需要傅立葉變換?要回答這個問題,我們不妨用時間t 與頻率f 之間的變換做例子。
  • Matlab傅立葉變換、餘弦變換和小波變換
    離散傅立葉變換的 Matlab實現Matlab 函數 fft、fft2 和 fftn 分別可以實現一維、二維和 N 維 DFT 算法;而函數 ifft、ifft2 和 ifftn 則用來計算反 DFT 。
  • 傅立葉變換、頻域的簡明理解
    而傅立葉變換為我們打開了一扇門,一扇與真理相通的大門,透過傅立葉變換,就能理解這宇宙萬物背後的運行規律。一、傅立葉級數---周期函數的正交基分解:1、標準正交基。不過傅立葉級數用處不大,自然界的信號,嚴格周期化的不多,所以需要推廣到非周期的處理。二、傅立葉變換---非周期函數的正交基分解:這個分成兩類,一個是連續函數的傅立葉變換,一個是離散函數的傅立葉變換連續傅立葉變換公式:
  • 為什麼要進行傅立葉變換
    Smith, Ph.D.外國人寫的,寫得非常淺顯,裡面有七章由淺入深地專門講述關於離散信號的傅立葉變換,雖然是英文文檔,作者還是硬著頭皮看完了有關傅立葉變換的有關內容,看了有茅塞頓開的感覺,在此把作者從中得到的理解拿出來跟大家分享,希望很多被傅立葉變換迷惑的朋友能夠得到一點啟發。
  • 傅立葉是誰,他到底在變換什麼?
    那麼 「傅立葉變換」神奇,一定是我已知的知識和這個理論之間有斷層。 於是我決定從「傅立葉變換」開始,不斷抽絲剝繭聯繫到我已知的簡單知識,並把上下層關係捋清楚,就能將其化神奇為平凡,理解傅立葉到底在變換什麼。 我先百度傅立葉變換,得到了這樣的一堆內容:
  • 為什麼要進行傅立葉變換,究竟有何意義?如何用MATLAB實現快速傅立葉變換?
    Smith, Ph.D.外國人寫的,寫得非常淺顯,裡面有七章由淺入深地專門講述關於離散信號的傅立葉變換,雖然是英文文檔,我還是硬著頭皮看完了有關傅立葉變換的有關內容,看了有茅塞頓開的感覺,在此把我從中得到的理解拿出來跟大家分享,希望很多被傅立葉變換迷惑的朋友能夠得到一點啟發,這電子書籍是免費的,有興趣的朋友也可以從網上下載下來看一下,URL地址是:http://www.dspguide.com/pdfbook.htm
  • 一步一步理解快速傅立葉變換
    傅立葉變換的原理任何一種變換方法都是為了我們能夠更簡單的解決問題,傅立葉變換亦是如此。我們平時是如何去分解一個複雜的問題呢?一個經典的方法就是把這個複雜的問題分解成為多個簡單的可操作的子問題。讓我詳細說來:1.傅立葉級數對於任何一個函數的曲線,傅立葉認為任何一個複雜的曲線都可以分解為正弦函數與餘弦函數的疊加!
  • 讓你永遠忘不了的傅立葉變換解析
    使用聯想鏈條和幾何直觀,輔以從實際需求衍生概念的思考模式,詳解什麼是傅立葉變換,為什麼要做傅立葉變換等,幫助記憶和理解,目的當然是標題所說:讓你永遠忘不了傅立葉變換這個公式。另,這篇博客還從側面一定程度上回答了另一個問題:為什麼要研究複數。
  • 圖像處理中的數學原理詳解(Part8)——傅立葉變換的來龍去脈
    這就是傅立葉變換及其反變換的表達式。一般情況下,若「傅立葉變換」一詞前不加任何限定語,則指的是「連續傅立葉變換」(連續函數的傅立葉變換)。連續傅立葉變換將頻率域的函數F(w) 表示為時間域的函數f(t)的積分形式。而其逆變換則是將時間域的函數f(t)表示為頻率域的復指數函數F(w)的積分。一般可稱函數f(t)為原函數,而稱函數F(w)為傅立葉變換的像函數,原函數和像函數構成一個傅立葉變換對。
  • 傅立葉變換還能畫簡筆畫?谷歌工程師開發的這個試玩網站火了| 附資源
    曉查 發自 凹非寺 量子位 報導 | 公眾號 QbitAI無論是處理聲音和圖像信號,都必須用到傅立葉變換。其實除了這些「正經」用途,它還能做一些有意思的事情。最近,一位名叫Jez Swanson的谷歌工程師自己寫了篇博客,教你用傅立葉變換畫出任何簡筆畫。目前已在Twitter已經收穫了3000+點讚。
  • 傅立葉變換、拉普拉斯變換、Z變換最全攻略
    傅立葉變換、拉普拉斯變換、Z變換的聯繫?他們的本質和區別是什麼?為什麼要進行這些變換。研究的都是什麼?從幾方面討論下。  傅立葉變換,拉普拉斯變換,Z變換的意義  【傅立葉變換】在物理學、數論、組合數學、信號處理、概率論、統計學、密碼學、聲學、光學、海洋學、結構動力學等領域都有著廣泛的應用(例如在信號處理中,傅立葉變換的典型用途是將信號分解成幅值分量和頻率分量)。
  • 基於快速傅立葉變換的在線電網諧波分析儀
    1.2 頻譜分析技術頻譜分析技術實現方法主要有掃頻法和傅立葉變換法,採用掃頻法實現的頻譜分析儀也稱為掃描調諧頻譜分析儀,主要採用模擬信號處理技術,只能實現顯示觀察功能,其靈活性較差。採用傅立葉變換實現的頻譜分析儀也稱為實時頻譜分析儀,主要採用數位訊號處理技術實現。
  • 如何理解傅立葉級數、傅立葉變換公式?
    > 此前在另外一篇文章嘗試給對傅立葉級數、傅
  • 完全搞懂傅立葉變換和小波(5)——傅立葉級數展開之函數項級數的概念
    1.4 傅立葉級數展開本文引用地址:http://www.eepw.com.cn/article/201703/345383.htm  之前我們在介紹泰勒展開式的時候提到過傅立葉級數。
  • 完全搞懂傅立葉變換和小波(6)——傅立葉級數展開之函數項級數的性質
    傅立葉級數是一種函數項(三角函數)級數,本質上來說,一幅圖像(或者一組信號)就是一個函數,我們研究圖像的傅立葉變換,就是要探討如何將圖像函數用三角函數進行展開。所以如果要徹底搞清楚傅立葉變換,那麼討論函數項級數的性質是非常有必要的。在此基礎上,我們將引入傅立葉級數的概念。
  • 傅立葉變換、拉普拉斯變換、Z 變換的聯繫是什麼?為什麼要進行這些變換?
    就是將函數K的兩個自變量交換位置仍然相等:有的變換可逆,這是什麼概念呢?就是變換後通過逆變換,還能還原!觀察正變換與逆變換,你會發現:什麼是傅立葉級數? 在談傅立葉變換之前,先談談傅立葉級數會更容易理解傅立葉變換。