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