作 者:韓 昊
知 乎:Heinrich
微 博:@花生油工人
知乎專欄:與時間無關的故事
謹以此文獻給大連海事大學的吳楠老師,柳曉鳴老師,王新年老師以及張晶泊老師。
轉載的同學請保留上面這句話,謝謝。如果還能保留文章來源就更感激不盡了。
https://zhuanlan.zhihu.com/p/19763358
p.s.本文無論是cos還是sin,都統一用“正弦波”(Sine Wave)一詞來代表簡諧波。
一、什麼是頻域
貫穿時域與頻域的方法之一,就是傳中說的傅里葉分析。傅里葉分析可分爲傅里葉級數(Fourier Serie)和傅里葉變換(Fourier Transformation),我們從簡單的開始談起。
二、傅里葉級數(Fourier Series)的頻譜
還是舉個栗子並且有圖有真相纔好理解。
如果我說我能用前面說的正弦曲線波疊加出一個帶90度角的矩形波來,你會相信嗎?你不會,就像當年的我一樣。但是看看下圖:
第一幅圖是一個鬱悶的正弦波cos(x)
第二幅圖是2個賣萌的正弦波的疊加cos(x)+a.cos(3x)
第三幅圖是4個發春的正弦波的疊加
第四幅圖是10個便祕的正弦波的疊加
隨着正弦波數量逐漸的增長,他們最終會疊加成一個標準的矩形,大家從中體會到了什麼道理?
(只要努力,彎的都能掰直!)
隨着疊加的遞增,所有正弦波中上升的部分逐漸讓原本緩慢增加的曲線不斷變陡,而所有正弦波中下降的部分又抵消了上升到最高處時繼續上升的部分使其變爲水平線。一個矩形就這麼疊加而成了。但是要多少個正弦波疊加起來才能形成一個標準90度角的矩形波呢?不幸的告訴大家,答案是無窮多個。(上帝:我能讓你們猜着我?)
不僅僅是矩形,你能想到的任何波形都是可以如此方法用正弦波疊加起來的。這是沒
有接觸過傅里葉分析的人在直覺上的第一個難點,但是一旦接受了這樣的設定,遊戲就開始有意思起來了。
還是上圖的正弦波累加成矩形波,我們換一個角度來看看:
在這幾幅圖中,最前面黑色的線就是所有正弦波疊加而成的總和,也就是越來越接近矩形波的那個圖形。而後面依不同顏色排列而成的正弦波就是組合爲矩形波的各個分量。這些正弦波按照頻率從低到高從前向後排列開來,而每一個波的振幅都是不同的。一定有細心的讀者發現了,每兩個正弦波之間都還有一條直線,那並不是分割線,而是振幅爲0的正弦波!也就是說,爲了組成特殊的曲線,有些正弦波成分是不需要的。
這裏,不同頻率的正弦波我們成爲頻率分量。
好了,關鍵的地方來了!!
如果我們把第一個頻率最低的頻率分量看作“1”,我們就有了構建頻域的最基本單元。
對於我們最常見的有理數軸,數字“1”就是有理數軸的基本單元。
時域的基本單元就是“1秒”,如果我們將一個角頻率爲\omega_{0} 的正弦波cos(\omega_{0} t)看作基礎,那麼頻域的基本單元就是\omega_{0} 。
有了“1”,還要有“0”才能構成世界,那麼頻域的“0”是什麼呢?cos(0t)就是一個週期無限長的正弦波,也就是一條直線!所以在頻域,0頻率也被稱爲直流分量,在傅里葉級數的疊加中,它僅僅影響全部波形相對於數軸整體向上或是向下而不改變波的形狀。
接下來,讓我們回到初中,回憶一下已經死去的八戒,啊不,已經死去的老師是怎麼定義正弦波的吧。
正弦波就是一個圓周運動在一條直線上的投影。所以頻域的基本單元也可以理解爲一個始終在旋轉的圓
介紹完了頻域的基本組成單元,我們就可以看一看一個矩形波,在頻域裏的另一個模樣了:
這是什麼奇怪的東西?
這就是矩形波在頻域的樣子,是不是完全認不出來了?教科書一般就給到這裏然後留給了讀者無窮的遐想,以及無窮的吐槽,其實教科書只要補一張圖就足夠了:頻域圖像,也就是俗稱的頻譜,就是——
再清楚一點:
可以發現,在頻譜中,偶數項的振幅都是0,也就對應了圖中的彩色直線。振幅爲0的正弦波。
三、傅里葉級數(Fourier Series)的相位譜
上一章的關鍵詞是:從側面看。這一章的關鍵詞是:從下面看。
在這一章最開始,我想先回答很多人的一個問題:傅里葉分析究竟是幹什麼用的?這段相對比較枯燥,已經知道了的同學可以直接跳到下一個分割線。
先說一個最直接的用途。無論聽廣播還是看電視,我們一定對一個詞不陌生——頻道。頻道頻道,就是頻率的通道,不同的頻道就是將不同的頻率作爲一個通道來進行信息傳輸。下面大家嘗試一件事:
先在紙上畫一個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。
最後來一張大集合:
四、傅里葉變換(Fourier Transformation)
是否有一種數學工具將連續非週期信號變換爲週期離散信號呢?抱歉,真沒有。
比如傅里葉級數,在時域是一個週期且連續的函數,而在頻域是一個非週期離散的函數。這句話比較繞嘴,實在看着費事可以乾脆回憶第一章的圖片。
而在我們接下去要講的傅里葉變換,則是將一個時域非週期的連續信號,轉換爲一個在頻域非週期的連續信號。
算了,還是上一張圖方便大家理解吧:
比如傅里葉級數,在時域是一個週期且連續的函數,而在頻域是一個非週期離散的函數。這句話比較繞嘴,實在看着費事可以乾脆回憶第一章的圖片。
而在我們接下去要講的傅里葉變換,則是將一個時域非週期的連續信號,轉換爲一個在頻域非週期的連續信號。
算了,還是上一張圖方便大家理解吧:
或者我們也可以換一個角度理解:傅里葉變換實際上是對一個週期無限大的函數進行傅里葉變換。
所以說,鋼琴譜其實並非一個連續的頻譜,而是很多在時間上離散的頻率,但是這樣的一個貼切的比喻真的是很難找出第二個來了。
因此在傅里葉變換在頻域上就從離散譜變成了連續譜。那麼連續譜是什麼樣子呢?
你見過大海麼?
爲了方便大家對比,我們這次從另一個角度來看頻譜,還是傅里葉級數中用到最多的那幅圖,我們從頻率較高的方向看。
以上是離散譜,那麼連續譜是什麼樣子呢?
盡情的發揮你的想象,想象這些離散的正弦波離得越來越近,逐漸變得連續……
直到變得像波濤起伏的大海:
很抱歉,爲了能讓這些波浪更清晰的看到,我沒有選用正確的計算參數,而是選擇了一些讓圖片更美觀的參數,不然這圖看起來就像屎一樣了。
不過通過這樣兩幅圖去比較,大家應該可以理解如何從離散譜變成了連續譜的了吧?原來離散譜的疊加,變成了連續譜的累積。所以在計算上也從求和符號變成了積分符號。
不過,這個故事還沒有講完,接下去,我保證讓你看到一幅比上圖更美麗壯觀的圖片,但是這裏需要介紹到一個數學工具才能然故事繼續,這個工具就是——
五、宇宙耍帥第一公式:歐拉公式
虛數i這個概念大家在高中就接觸過,但那時我們只知道它是-1的平方根,可是它真正的意義是什麼呢?
這裏有一條數軸,在數軸上有一個紅色的線段,它的長度是1。當它乘以3的時候,它的長度發生了變化,變成了藍色的線段,而當它乘以-1的時候,就變成了綠色的線段,或者說線段在數軸上圍繞原點旋轉了180度。
我們知道乘-1其實就是乘了兩次 i使線段旋轉了180度,那麼乘一次 i 呢——答案很簡單——旋轉了90度。
同時,我們獲得了一個垂直的虛數軸。實數軸與虛數軸共同構成了一個複數的平面,也稱複平面。這樣我們就瞭解到,乘虛數i的一個功能——旋轉。
現在,就有請宇宙第一耍帥公式歐拉公式隆重登場——
這個公式在數學領域的意義要遠大於傅里葉分析,但是乘它爲宇宙第一耍帥公式是因爲它的特殊形式——當x等於Pi的時候。
經常有理工科的學生爲了跟妹子表現自己的學術功底,用這個公式來給妹子解釋數學之美:”石榴姐你看,這個公式裏既有自然底數e,自然數1和0,虛數i還有圓周率pi,它是這麼簡潔,這麼美麗啊!“但是姑娘們心裏往往只有一句話:”臭屌絲……“
這個公式關鍵的作用,是將正弦波統一成了簡單的指數形式。我們來看看圖像上的涵義:
歐拉公式所描繪的,是一個隨着時間變化,在複平面上做圓周運動的點,隨着時間的改變,在時間軸上就成了一條螺旋線。如果只看它的實數部分,也就是螺旋線在左側的投影,就是一個最基礎的餘弦函數。而右側的投影則是一個正弦函數。
六、指數形式的傅里葉變換
有了歐拉公式的幫助,我們便知道:正弦波的疊加,也可以理解爲螺旋線的疊加在實數空間的投影。
傅里葉變換出來的頻譜不僅僅是可見光這樣頻率範圍有限的疊加,而是頻率從0到無窮所有頻率的組合。
這裏,我們可以用兩種方法來理解正弦波:
第一種前面已經講過了,就是螺旋線在實軸的投影。
另一種需要藉助歐拉公式的另一種形式去理解:
將以上兩式相加再除2,得到:
這個式子可以怎麼理解呢?
我們剛纔講過,e(it)可以理解爲一條逆時針旋轉的螺旋線,那麼e(-it)則可以理解爲一條順時針旋轉的螺旋線。而cos(t)則是這兩條旋轉方向不同的螺旋線疊加的一半,因爲這兩條螺旋線的虛數部分相互抵消掉了!
好了,剛纔我們已經看到了大海——連續的傅里葉變換頻譜,現在想一想,連續的螺旋線會是什麼樣子:
想象一下再往下翻:
是不是很漂亮?
你猜猜,這個圖形在時域是什麼樣子?
哈哈,是不是覺得被狠狠扇了一個耳光。數學就是這麼一個把簡單的問題搞得很複雜的東西。
順便說一句,那個像大海螺一樣的圖,爲了方便觀看,我僅僅展示了其中正頻率的部分,負頻率的部分沒有顯示出來。
如果你認真去看,海螺圖上的每一條螺旋線都是可以清楚的看到的,每一條螺旋線都有着不同的振幅(旋轉半徑),頻率(旋轉週期)以及相位。而將所有螺旋線連成平面,就是這幅海螺圖了。
好了,講到這裏,相信大家對傅里葉變換以及傅里葉級數都有了一個形象的理解了,我們最後用一張圖來總結一下:
到這裏,傅里葉的故事就全部講完了~