第一課:什么是卷積,卷積有什么用,什么是傅利葉變換,什么是拉普拉斯變換?
很多朋友和我一樣,工科電子類專業(yè),學了一堆信號方面的課,什么都沒學懂,背了公式考了試,然后畢業(yè)了。
先說”卷積有什么用”這個問題。(有人搶答,”卷積”是為了學習”信號與系統(tǒng)”這門課的后續(xù)章節(jié)而存在的。我大吼一聲,把他拖出去…)
講一個故事:
張三剛剛應(yīng)聘到了一個電子產(chǎn)品公司做測試人員,他沒有學過”信號與系統(tǒng)”這門課程。一天,他拿到了一個產(chǎn)品,開發(fā)人員告訴他,產(chǎn)品有一個輸入端,有一個輸出端,有限的輸入信號只會產(chǎn)生有限的輸出。
然后,經(jīng)理讓張三測試當輸入sin(t)(t<1秒)信號的時候(有信號發(fā)生器),該產(chǎn)品輸出什么樣的波形。張三照做了,花了一個波形圖。
“很好!”經(jīng)理說。然后經(jīng)理給了張三一疊A4紙: “這里有幾千種信號,都用公式說明了,輸入信號的持續(xù)時間也是確定的。你分別測試以下我們產(chǎn)品的輸出波形是什么吧!”
這下張三懵了,他在心理想”上帝,幫幫我把,我怎么畫出這些波形圖呢?”
于是上帝出現(xiàn)了: “張三,你只要做一次測試,就能用數(shù)學的方法,畫出所有輸入波形對應(yīng)的輸出波形”。
上帝接著說:”給產(chǎn)品一個脈沖信號,能量是1焦耳,輸出的波形圖畫出來!”
張三照辦了,”然后呢?”
上帝又說,”對于某個輸入波形,你想象把它微分成無數(shù)個小的脈沖,輸入給產(chǎn)品,疊加出來的結(jié)果就是你的輸出波形。你可以想象這些小脈沖排著隊進入你的產(chǎn)品,每個產(chǎn)生一個小的輸出,你畫出時序圖的時候,輸入信號的波形好像是反過來進入系統(tǒng)的。”
張三領(lǐng)悟了:” 哦,輸出的結(jié)果就積分出來啦!感謝上帝。這個方法叫什么名字呢?”
上帝說:”叫卷積!”
從此,張三的工作輕松多了。每次經(jīng)理讓他測試一些信號的輸出結(jié)果,張三都只需要在A4紙上做微積分就是提交任務(wù)了!
張三愉快地工作著,直到有一天,平靜的生活被打破。
經(jīng)理拿來了一個小的電子設(shè)備,接到示波器上面,對張三說: “看,這個小設(shè)備產(chǎn)生的波形根本沒法用一個簡單的函數(shù)來說明,而且,它連續(xù)不斷的發(fā)出信號!不過幸好,這個連續(xù)信號是每隔一段時間就重復(fù)一次的。張三,你來測試以下,連到我們的設(shè)備上,會產(chǎn)生什么輸出波形!”
張三擺擺手:”輸入信號是無限時長的,難道我要測試無限長的時間才能得到一個穩(wěn)定的,重復(fù)的波形輸出嗎?”
經(jīng)理怒了:”反正你給我搞定,否則炒魷魚!”
張三心想:”這次輸入信號連公式都給出出來,一個很混亂的波形;時間又是無限長的,卷積也不行了,怎么辦呢?”
及時地,上帝又出現(xiàn)了:”把混亂的時間域信號映射到另外一個數(shù)學域上面,計算完成以后再映射回來,宇宙的每一個原子都在旋轉(zhuǎn)和震蕩,你可以把時間信號看成若干個震蕩疊加的效果,也就是若干個可以確定的,有固定頻率特性的東西。
我給你一個數(shù)學函數(shù)f,時間域無限的輸入信號在f域有限的。時間域波形混亂的輸入信號在f域是整齊的容易看清楚的。這樣你就可以計算了。
同時,時間域的卷積在f域是簡單的相乘關(guān)系,我可以證明給你看看。
計算完有限的程序以后,取f(-1)反變換回時間域,你就得到了一個輸出波形,剩下的就是你的數(shù)學計算了!
張三謝過了上帝,保住了他的工作。后來他知道了,f域的變換有一個名字,叫做傅利葉,什么什么… …
—————————————-
再后來,公司開發(fā)了一種新的電子產(chǎn)品,輸出信號是無限時間長度的。這次,張三開始學拉普拉斯了……
后記:
不是我們學的不好,是因為教材不好,老師講的也不好。
很欣賞Google的面試題: 用3句話像老太太講清楚什么是數(shù)據(jù)庫。這樣的命題非常好,因為沒有深入的理解一個命題,沒有仔細的思考一個東西的設(shè)計哲學,我們就會陷入細節(jié)的泥沼: 背公式,數(shù)學推導(dǎo),積分,做題;而沒有時間來回答”為什么要這樣”。做大學老師的做不到”把厚書讀薄”這一點,講不出哲學層面的道理,一味背書和翻講 ppt,做著枯燥的數(shù)學證明,然后責怪”現(xiàn)在的學生一代不如一代”,有什么意義嗎?
第二課:到底什么是頻率什么是系統(tǒng)?
這一篇,我展開的說一下傅立葉變換F。注意,傅立葉變換的名字F可以表示頻率的概念(freqence),也可以包括其他任何概念,因為它只是一個概念模型,為了解決計算的問題而構(gòu)造出來的(例如時域無限長的輸入信號,怎么得到輸出信號)。我們把傅立葉變換看一個C語言的函數(shù),信號的輸出輸出問題看為IO 的問題,然后任何難以求解的x->y的問題都可以用x->f(x)->f-1(x)->y來得到。
1. 到底什么是頻率?
一個基本的假設(shè): 任何信息都具有頻率方面的特性,音頻信號的聲音高低,光的頻譜,電子震蕩的周期,等等,我們抽象出一個件諧振動的概念,數(shù)學名稱就叫做頻率。想象在x-y 平面上有一個原子圍繞原點做半徑為1勻速圓周運動,把x軸想象成時間,那么該圓周運動在y軸上的投影就是一個sin(t)的波形。相信中學生都能理解這個。
那么,不同的頻率模型其實就對應(yīng)了不同的圓周運動速度。圓周運動的速度越快,sin(t)的波形越窄。頻率的縮放有兩種模式
(a) 老式的收音機都是用磁帶作為音樂介質(zhì)的,當我們快放的時候,我們會感覺歌唱的聲音變得怪怪的,調(diào)子很高,那是因為”圓周運動”的速度增倍了,每一個聲音分量的sin(t)輸出變成了sin(nt)。
(b) 在CD/計算機上面快放或滿放感覺歌手快唱或者慢唱,不會出現(xiàn)音調(diào)變高的現(xiàn)象:因為快放的時候采用了時域采樣的方法,丟棄了一些波形,但是承載了信息的輸出波形不會有寬窄的變化;滿放時相反,時域信號填充拉長就可以了。
2. F變換得到的結(jié)果有負數(shù)/復(fù)數(shù)部分,有什么物理意義嗎?
解釋: F變換是個數(shù)學工具,不具有直接的物理意義,負數(shù)/復(fù)數(shù)的存在只是為了計算的完整性。
3. 信號與系統(tǒng)這們課的基本主旨是什么?
對于通信和電子類的學生來說,很多情況下我們的工作是設(shè)計或者OSI七層模型當中的物理層技術(shù),這種技術(shù)的復(fù)雜性首先在于你必須確立傳輸介質(zhì)的電氣特性,通常不同傳輸介質(zhì)對于不同頻率段的信號有不同的處理能力。以太網(wǎng)線處理基帶信號,廣域網(wǎng)光線傳出高頻調(diào)制信號,移動通信,2G和3G分別需要有不同的載頻特性。那么這些介質(zhì)(空氣,電線,光纖等)對于某種頻率的輸入是否能夠在傳輸了一定的距離之后得到基本不變的輸入呢? 那么我們就要建立介質(zhì)的頻率相應(yīng)數(shù)學模型。同時,知道了介質(zhì)的頻率特性,如何設(shè)計在它上面?zhèn)鬏數(shù)男盘柌拍艽蟮嚼碚撋系淖畲髠鬏斔俾?—-這就是信號與系統(tǒng)這們課帶領(lǐng)我們進入的一個世界。
當然,信號與系統(tǒng)的應(yīng)用不止這些,和香農(nóng)的信息理論掛鉤,它還可以用于信息處理(聲音,圖像),模式識別,智能控制等領(lǐng)域。如果說,計算機專業(yè)的課程是數(shù)據(jù)表達的邏輯模型,那么信號與系統(tǒng)建立的就是更底層的,代表了某種物理意義的數(shù)學模型。數(shù)據(jù)結(jié)構(gòu)的知識能解決邏輯信息的編碼和糾錯,而信號的知識能幫我們設(shè)計出碼流的物理載體(如果接受到的信號波形是混亂的,那我依據(jù)什么來判斷這個是1還是0? 邏輯上的糾錯就失去了意義)。在工業(yè)控制領(lǐng)域,計算機的應(yīng)用前提是各種數(shù)模轉(zhuǎn)換,那么各種物理現(xiàn)象產(chǎn)生的連續(xù)模擬信號(溫度,電阻,大小,壓力,速度等) 如何被一個特定設(shè)備轉(zhuǎn)換為有意義的數(shù)字信號,首先我們就要設(shè)計一個可用的數(shù)學轉(zhuǎn)換模型。
4. 如何設(shè)計系統(tǒng)?
設(shè)計物理上的系統(tǒng)函數(shù)(連續(xù)的或離散的狀態(tài)),有輸入,有輸出,而中間的處理過程和具體的物理實現(xiàn)相關(guān),不是這們課關(guān)心的重點(電子電路設(shè)計?)。信號與系統(tǒng)歸根到底就是為了特定的需求來設(shè)計一個系統(tǒng)函數(shù)。設(shè)計出系統(tǒng)函數(shù)的前提是把輸入和輸出都用函數(shù)來表示(例如sin(t))。分析的方法就是把一個復(fù)雜的信號分解為若干個簡單的信號累加,具體的過程就是一大堆微積分的東西,具體的數(shù)學運算不是這門課的中心思想。
那么系統(tǒng)有那些種類呢?
(a) 按功能分類: 調(diào)制解調(diào)(信號抽樣和重構(gòu)),疊加,濾波,功放,相位調(diào)整,信號時鐘同步,負反饋鎖相環(huán),以及若干子系統(tǒng)組成的一個更為復(fù)雜的系統(tǒng)—-你可以畫出系統(tǒng)流程圖,是不是很接近編寫程序的邏輯流程圖? 確實在符號的空間里它們沒有區(qū)別。還有就是離散狀態(tài)的數(shù)字信號處理(后續(xù)課程)。
(b) 按系統(tǒng)類別劃分,無狀態(tài)系統(tǒng),有限狀態(tài)機,線性系統(tǒng)等。而物理層的連續(xù)系統(tǒng)函數(shù),是一種復(fù)雜的線性系統(tǒng)。
5. 最好的教材?
符號系統(tǒng)的核心是集合論,不是微積分,沒有集合論構(gòu)造出來的系統(tǒng),實現(xiàn)用到的微積分便毫無意義—-你甚至不知道運算了半天到底是要作什么。以計算機的觀點來學習信號與系統(tǒng),最好的教材之一就是<<Structure and Interpretationof Signals and Systems>>, 作者是UC Berkeley的Edward A.Leeand Pravin Varaiya—-先定義再實現(xiàn),符合人類的思維習慣。國內(nèi)的教材通篇都是數(shù)學推導(dǎo),就是不肯說這些推導(dǎo)是為了什么目的來做的,用來得到什么,建設(shè)什么,防止什么;不去從認識論和需求上討論,通篇都是看不出目的的方法論,本末倒置了。
第三課:抽樣定理是干什么的?
1. 舉個例子,打電話的時候,電話機發(fā)出的信號是PAM脈沖調(diào)幅,在電話線路上傳的不是話音,而是話音通過信道編碼轉(zhuǎn)換后的脈沖序列,在收端恢復(fù)語音波形。那么對于連續(xù)的說話人語音信號,如何轉(zhuǎn)化成為一些列脈沖才能保證基本不失真,可以傳輸呢? 很明顯,我們想到的就是取樣,每隔M毫秒對話音采樣一次看看電信號振幅,把振幅轉(zhuǎn)換為脈沖編碼,傳輸出去,在收端按某種規(guī)則重新生成語言。
那么,問題來了,每M毫秒采樣一次,M多小是足夠的? 在收端怎么才能恢復(fù)語言波形呢?
對于第一個問題,我們考慮,語音信號是個時間頻率信號(所以對應(yīng)的F變換就表示時間頻率)把語音信號分解為若干個不同頻率的單音混合體(周期函數(shù)的復(fù)利葉級數(shù)展開,非周期的區(qū)間函數(shù),可以看成補齊以后的周期信號展開,效果一樣),對于最高頻率的信號分量,如果抽樣方式能否保證恢復(fù)這個分量,那么其他的低頻率分量也就能通過抽樣的方式使得信息得以保存。如果人的聲音高頻限制在3000Hz,那么高頻分量我們看成sin(3000t),這個sin函數(shù)要通過抽樣保存信息,可以看為: 對于一個周期,波峰采樣一次,波谷采樣一次,也就是采樣頻率是最高頻率分量的2倍(奈奎斯特抽樣定理),我們就可以通過采樣信號無損的表示原始的模擬連續(xù)信號。這兩個信號一一對應(yīng),互相等價。
對于第二個問題,在收端,怎么從脈沖序列(梳裝波形)恢復(fù)模擬的連續(xù)信號呢? 首先,我們已經(jīng)肯定了在頻率域上面的脈沖序列已經(jīng)包含了全部信息,但是原始信息只在某一個頻率以下存在,怎么做? 我們讓輸入脈沖信號I通過一個設(shè)備X,輸出信號為原始的語音O,那么I(*)X=O,這里(*)表示卷積。時域的特性不好分析,那么在頻率域 F(I)*F(X)=F(O)相乘關(guān)系,這下就很明顯了,只要F(X)是一個理想的,低通濾波器就可以了(在F域畫出來就是一個方框),它在時間域是一個鐘型函數(shù)(由于包含時間軸的負數(shù)部分,所以實際中不存在),做出這樣的一個信號處理設(shè)備,我們就可以通過輸入的脈沖序列得到幾乎理想的原始的語音。在實際應(yīng)用中,我們的抽樣頻率通常是奈奎斯特頻率再多一點,3k赫茲的語音信號,抽樣標準是8k赫茲。
2. 再舉一個例子,對于數(shù)字圖像,抽樣定理對應(yīng)于圖片的分辨率—-抽樣密度越大,圖片的分辨率越高,也就越清晰。如果我們的抽樣頻率不夠,信息就會發(fā)生混疊—-網(wǎng)上有一幅圖片,近視眼戴眼鏡看到的是愛因斯坦,摘掉眼睛看到的是夢露—-因為不帶眼睛,分辨率不夠(抽樣頻率太低),高頻分量失真被混入了低頻分量,才造成了一個視覺陷阱。在這里,圖像的F變化,對應(yīng)的是空間頻率。
話說回來了,直接在信道上傳原始語音信號不好嗎? 模擬信號沒有抗干擾能力,沒有糾錯能力,抽樣得到的信號,有了數(shù)字特性,傳輸性能更佳。
什么信號不能理想抽樣? 時域有跳變,頻域無窮寬,例如方波信號。如果用有限帶寬的抽樣信號表示它,相當于復(fù)利葉級數(shù)取了部分和,而這個部分和在恢復(fù)原始信號的時候,在不可導(dǎo)的點上面會有毛刺,也叫吉布斯現(xiàn)象。
3. 為什么傅立葉想出了這么一個級數(shù)來? 這個源于西方哲學和科學的基本思想: 正交分析方法。例如研究一個立體形狀,我們使用x,y,z三個互相正交的軸: 任何一個軸在其他軸上面的投影都是0。這樣的話,一個物體的3視圖就可以完全表達它的形狀。同理,信號怎么分解和分析呢? 用互相正交的三角函數(shù)分量的無限和:這就是傅立葉的貢獻。
第四課:傅立葉變換的復(fù)數(shù)小波
說的廣義一點,”復(fù)數(shù)”是一個”概念”,不是一種客觀存在。
什么是”概念”? 一張紙有幾個面? 兩個,這里”面”是一個概念,一個主觀對客觀存在的認知,就像”大”和”小”的概念一樣,只對人的意識有意義,對客觀存在本身沒有意義(康德: 純粹理性的批判)。把紙條的兩邊轉(zhuǎn)一下相連接,變成”莫比烏斯圈”,這個紙條就只剩下一個”面”了。概念是對客觀世界的加工,反映到意識中的東西。
數(shù)的概念是這樣被推廣的: 什么數(shù)x使得x^2=-1? 實數(shù)軸顯然不行,(-1)*(-1)=1。那么如果存在一個抽象空間,它既包括真實世界的實數(shù),也能包括想象出來的x^2=-1,那么我們稱這個想象空間為”復(fù)數(shù)域”。那么實數(shù)的運算法則就是復(fù)數(shù)域的一個特例。為什么1*(-1)=-1? +-符號在復(fù)數(shù)域里面代表方向,-1就是”向后,轉(zhuǎn)!”這樣的命令,一個1在圓周運動180度以后變成了-1,這里,直線的數(shù)軸和圓周旋轉(zhuǎn),在復(fù)數(shù)的空間里面被統(tǒng)一了。
因此,(-1)*(-1)=1可以解釋為”向后轉(zhuǎn)”+”向后轉(zhuǎn)”=回到原地。那么復(fù)數(shù)域如何表示x^2=-1呢? 很簡單,”向左轉(zhuǎn)”,”向左轉(zhuǎn)”兩次相當于”向后轉(zhuǎn)”。由于單軸的實數(shù)域(直線)不包含這樣的元素,所以復(fù)數(shù)域必須由兩個正交的數(shù)軸表示–平面。很明顯,我們可以得到復(fù)數(shù)域乘法的一個特性,就是結(jié)果的絕對值為兩個復(fù)數(shù)絕對值相乘,旋轉(zhuǎn)的角度=兩個復(fù)數(shù)的旋轉(zhuǎn)角度相加。高中時代我們就學習了迪莫弗定理。為什么有這樣的乘法性質(zhì)?不是因為復(fù)數(shù)域恰好具有這樣的乘法性質(zhì)(性質(zhì)決定認識),而是發(fā)明復(fù)數(shù)域的人就是根據(jù)這樣的需求去弄出了這么一個復(fù)數(shù)域(認識決定性質(zhì)),是一種主觀唯心主義的研究方法。為了構(gòu)造x^2=-1,我們必須考慮把乘法看為兩個元素構(gòu)成的集合:乘積和角度旋轉(zhuǎn)。
因為三角函數(shù)可以看為圓周運動的一種投影,所以,在復(fù)數(shù)域,三角函數(shù)和乘法運算(指數(shù))被統(tǒng)一了。我們從實數(shù)域的傅立葉級數(shù)展開入手,立刻可以得到形式更簡單的,復(fù)數(shù)域的,和實數(shù)域一一對應(yīng)的傅立葉復(fù)數(shù)級數(shù)。因為復(fù)數(shù)域形式簡單,所以研究起來方便—-雖然自然界不存在復(fù)數(shù),但是由于和實數(shù)域的級數(shù)一一對應(yīng),我們做個反映射就能得到有物理意義的結(jié)果。
那么傅立葉變換,那個令人難以理解的轉(zhuǎn)換公式是什么含義呢? 我們可以看一下它和復(fù)數(shù)域傅立葉級數(shù)的關(guān)系。什么是微積分,就是先微分,再積分,傅立葉級數(shù)已經(jīng)作了無限微分了,對應(yīng)無數(shù)個離散的頻率分量沖擊信號的和。傅立葉變換要解決非周期信號的分析問題,想象這個非周期信號也是一個周期信號: 只是周期為無窮大,各頻率分量無窮小而已(否則積分的結(jié)果就是無窮)。那么我們看到傅立葉級數(shù),每個分量常數(shù)的求解過程,積分的區(qū)間就是從T變成了正負無窮大。而由于每個頻率分量的常數(shù)無窮小,那么讓每個分量都去除以f,就得到有值的數(shù)—-所以周期函數(shù)的傅立葉變換對應(yīng)一堆脈沖函數(shù)。同理,各個頻率分量之間無限的接近,因為f很小,級數(shù)中的f,2f,3f之間幾乎是挨著的,最后挨到了一起,和卷積一樣,這個復(fù)數(shù)頻率空間的級數(shù)求和最終可以變成一個積分式:傅立葉級數(shù)變成了傅立葉變換。注意有個概念的變化:離散的頻率,每個頻率都有一個”權(quán)”值,而連續(xù)的F域,每個頻率的加權(quán)值都是無窮小(面積=0),只有一個頻率范圍內(nèi)的”頻譜”才對應(yīng)一定的能量積分。頻率點變成了頻譜的線。
因此傅立葉變換求出來的是一個通常是一個連續(xù)函數(shù),是復(fù)數(shù)頻率域上面的可以畫出圖像的東西?那個根號2Pai又是什么? 它只是為了保證正變換反變換回來以后,信號不變。我們可以讓正變換除以2,讓反變換除以Pi,怎么都行。