1. 程式人生 > >形象地展示訊號與系統中的一些細節和原理——卷積、複數、傅立葉變換、拉普拉斯變換、零極圖唯一確定因果LTI系統

形象地展示訊號與系統中的一些細節和原理——卷積、複數、傅立葉變換、拉普拉斯變換、零極圖唯一確定因果LTI系統

看懂本文需要讀者具備一定的微積分基礎、至少開始學訊號與系統了
本文主要講解尤拉公式、傅立葉變換的頻率軸的負半軸的意義、傅立葉變換的缺陷、為什麼因果LTI系統可以被零極圖幾乎唯一確定等等容易被初學者忽略但對深入理解非常重要的細節問題
本文秉承儘量直觀的原則,儘量少用純數學推導,而多用形象直觀的物理意義、幾何意義、舉例
作者的審美極度直男癌,本文的排版可能引起很多人不適,但本文的內容一定是亮點
作者還沒本科畢業,水平有限,讀者如發現本文的錯誤、讀不懂的地方,懇請提出
全文原創,轉載請標明出處

 

訊號與系統是電子資訊類專業的專業課,這門課看上去很像數學分析,不像模電數電電磁場微機原理那樣與物理世界貼合得緊密、容易想象
訊號與系統裡存在δ

(t)、復指數訊號、非因果訊號與系統等不存在於物理世界中的難以想象的東西,但它們在訊號處理領域非常重要,為了幫大家建立直觀理解,特地寫作此文,以解決初學者們的一些疑問,這些疑問都是我初學的時候曾有過的

 

本文已假設讀者掌握了

  • 極限、積分
  • 無窮級數、狄利克雷條件
  • 時域與頻域
  • LTI系統

等知識點

 

卷積

LTI系統的輸出訊號=輸入訊號卷積LTI系統的單位衝激響應。卷積的積分表示式是∫-∞+∞f(τ)g(t-τ)dτ,乍一看感覺不知所云,咋又有t又有τ,其實這個表示式具有非常直觀的物理意義,舉個很簡單的例子:

  • f(τ)是在τ時刻用一次會打出多顆子彈的槍命中敵人的子彈數
  • g(t)是敵人被命中1發子彈後的掉血函式,例如第1秒掉5血、第2秒掉3血、第3秒掉1血、然後不再掉。顯然g(t-τ)是敵人在τ時刻被命中1發子彈後的掉血函式
  • t時刻敵人實際的掉血量是過去和當前命中的子彈各自產生的作用求和
  • 把離散的子彈換成連續的鐳射束,那麼上述的求和就成為積分

注意:卷積的積分表示式裡的積分割槽間是τ∈[-∞,+∞],因為這樣就能讓公式適用於無窮長的被卷積函式
簡而言之:卷積的物理意義是——輸出訊號=輸入訊號的各片段產生的各輸出訊號作用的總和

 

 

 

尤拉公式

早在高中數學就引入了複數(complex number),高中數學只說了√(-1)等於1個虛數單位,可以用i

表示虛數單位,有虛部的數叫複數(complex number),只有虛部沒有實部的數叫純虛數(pure imaginary number)。高中數學並沒幫我們對複數形成直觀理解,它只說了複數在電子技術等很多領域有非常廣泛的應用,然後就是教如何計算複數的運算、在複平面表示複數

電子資訊科技中,為了讓虛數單位的符號不與表示電流的符號混淆,改用j表示1個虛數單位

複數、虛數的英文名字complex number、imaginary number,看上去是在說複數是複雜的數、虛數是想象出來的數,在知道虛數的英文名之前,我一直以為虛數的"虛"表示虛假,實際上應該表示虛構
虛數的英文名字imaginary number似乎表明了引入虛數的原因:實數不能滿足需求,於是虛構出能滿足需求的數即虛數。同時這也似乎表明虛數並不存在於物理世界中,否則幹嘛還要"虛構"出虛數呢。尤拉公式闡述了虛數需要滿足的"需求"是什麼
推薦看這個直觀的視訊來了解尤拉公式
視訊作者是斯坦福大學數學系畢業生,他在Youtube、Bilibili用名字3Blue1Brown釋出了很多形象地展示數學之美的視訊,推薦對數學感興趣的同學們細品
彈幕中有很多還沒上大學的中小學生髮表的撞壁言論。為了讓你自己專注於知識而非彈幕撕逼戰,為了不被撞壁言論打擊學習的積極性和自信心,建議關閉彈幕以保護智商。同時你也要保持對知識的敬畏之心,當你掌握更多知識之後,你可能會發現你之前對某些知識引以為傲的理解非常片面甚至錯誤


尤拉公式e=-1表明了虛數單位j在複平面上的作用:乘j相當於繞原點逆時針旋轉90°,乘e相當於繞原點逆時針旋轉α rad

 

 

 

LTI系統的特徵訊號

任何滿足狄利克雷條件的周期函式都可以被展開為三角級數,尤拉公式又表明任一三角函式能展開為一對頻率、瞬時相位都互為相反數的復指數函式之和
訊號與系統教材已用純數學手段證明覆指數訊號是LTI系統的特徵訊號,即如果把鋪滿整個時間軸的復指數訊號輸入給LTI系統,那麼LTI系統的輸出訊號一定是鋪滿整個時間軸的同頻的復指數訊號,可能只是相位、幅度發生變化
物理世界的所有訊號都功率有限(即振幅有限、斜率有限)、能量有限(即不會無止境地存在),天然地滿足狄利克雷條件
顯然如果LTI系統總是對頻率互為相反數的復指數訊號具有互為相反數的相移、相同的幅度增益/衰減,那麼把鋪滿整個時間軸的正弦訊號輸入給LTI系統,LTI系統的輸出訊號也一定是鋪滿整個時間軸的同頻正弦訊號,可能只是相位、幅度發生變化,從而正弦訊號也能是LTI系統的特徵訊號
幸運的是物理世界的LTI系統能將正弦訊號作為特徵訊號

如果能知道物理世界的LTI系統對各個頻率的正弦訊號會產生多大的增益/衰減、多大的相移 、知道訊號裡的各種正弦頻率成分的幅度、初始相位,根據LTI系統的線性性質,也能得知輸出訊號的波形
就像模電教材分析電路的頻率特性總是拿正弦訊號作為輸入訊號。得知電路對感興趣的頻率的正弦訊號的相移、增益/衰減,就得知了這個電路的頻率特性
你現在可能覺得這比在時域上x(t)*h(t)麻煩一些,但你得注意到:
在現實世界中可能造出完美的δ(t)嗎?造出的δ(t)的持續時間是不是無窮小?能測量出持續時間就說明持續時間不是無窮小。既然弄不出完美的δ(t)那又怎麼得知精準的h(t)?
有些情況下的訊號處理任務在頻域下進行,例如你很可能見過的音訊播放器軟體或者音響裝置控制檯的均衡器(equalizer),可能長這樣:

圖中的這個均衡器的頂部表示正弦頻率、底部表示增益/衰減程度(正比於以某個統一值為底數的增益/衰減倍數的對數),顯然圖中的均衡器的目標是提升聲音中的低頻、高頻分量幅度,衰減中頻分量幅度,有的均衡器設定能讓100塊錢的音響放出1000塊錢的效果
在音訊均衡器的例子中,推匯出輸出訊號需要知道輸入訊號中感興趣的頻率的幅度


如何知道系統對各頻率成分的增益/衰減、滯後/超前?訊號與系統教材已經證明過δ(t)包含所有頻率分量,知道LTI系統對輸入訊號是δ(t)時的響應h(t),就相當於知道了LTI系統對所有頻率的響應
下面就來這個問題:如何知道訊號裡各正弦頻率成分的幅度、初始相位

 

 

 

正弦函式的正交性、連續時間傅立葉變換

高等數學講過三角函式具備正交性,即兩個不同頻率的正弦函式的積函式,在積函式的整數個週期內的積分是0,即:
不妨記這2個頻率分別為Ω1Ω2,積函式為cosΩ1tcosΩ2t,直接計算積函式的積分可能很困難,但是可以藉助尤拉公式來簡化
把cosΩ1t、cosΩ2t都展開為復指數的和的表示式,然後乘開乘積,再把頻率互為相反數的復指數函式合併為正弦函式
所以cosΩ1tcosΩ2t=[cos(Ω1+Ω2)t+cos(Ω1-Ω2)t]/2,再算積分就非常簡單了:

  • 如果Ω1=Ω2,那麼cos(Ω1-Ω2)t就成為常數1,這時cosΩ1tcosΩ2t≥0,從而無論在哪段t上積分,結果都非0
  • 如果Ω1Ω2,那麼顯然在積函式的整數個週期內cos(Ω1+Ω2)t和cos(Ω1-Ω2)t的積分都是0

再結合高等數學推匯出的"週期趨於+∞時的三角級數"的知識,可以把物理世界的訊號(記為x(t))寫為無窮個不同頻率的正弦訊號的線性組合,如果想知道這個線性組合裡Ω0分量有多少,那就計算x(t)cos(Ω0t)的積分,積分割槽間必須蓋住x(t)有值的時間段,乾脆就設為cos(Ω0t)的無窮個週期即鋪滿整個時間軸吧,反正x(t)=0的時刻完全不影響積分值,而且能保證積分割槽間一定蓋滿x(t)非0的時間段

但是仍然存在問題:

  • 積分值無法反映x(t)中的Ω0分量在t=0時刻的相位
  • 如果積分時間段不是cos(Ω0t)的整數個週期,那麼cos(Ω0t)的初始相位會影響積分值;

於是引出傅立葉變換

傅立葉變換的思路和前文所述的以正弦訊號為基分解訊號的思路相當,只是傅立葉變換的基是物理世界並不存在的復指數訊號
很好理解基是正弦訊號的情況,也可以用尤拉公式把正弦訊號基分解為一對復指數訊號基,從而理解基是復指數訊號的情況。但還有一種更直觀地理解基是復指數訊號的情況的方法,推薦看看這個視訊
這個視訊依然是3Blue1Brown的作品,依然建議關閉彈幕、保護智商

 

視訊為了能演示,選用的訊號長度是有限的
如視訊中的操作:根據尤拉公式的幾何含義,把x(t)e-jΩt看作把x(t)在複平面上從相角為0的地方、繞著原點、向逆時針方向、以角速度Ωrad/s旋轉鋪開,如果訊號中真的含有e-jΩt,那麼旋轉鋪開得到的形狀肯定會顯然不關於原點對稱,從而質心明顯偏離原點;

如果訊號不包含e-jΩt,那麼旋轉鋪開得到的形狀就會非常像關於原點中心對稱,從而質心離原點很近

同時也容易想象到:如果訊號的初始相位變化,那麼最終旋轉鋪開得到的形狀會繞原點旋轉,從而很容易理解從原點指到質心的相量的模能反映訊號中e-jΩt的振幅、幅角能反映訊號中e-jΩt的初始相位

對一個訊號,取從-∞到+∞的所有復指數頻率,進行上面的操作,得到各復指數頻率下對應的質心在複平面的座標值,這就是連續時間傅立葉變換(The Continuous-Time Fourier Transform,簡稱CTFT),記x(t)的傅立葉變換為X(Ω)

再看傅立葉變換的公式X(Ω)=∫-∞+∞x(t)e-jΩtdt,有沒有感覺這個公式非常直觀

 

你可能仍有疑問,例如視訊中這個時域訊號的幅頻圖,在時域訊號並不包含的頻率處並不是0,而是有波動

這是因為參與變換的時域訊號有限長,如果時域訊號持續時間不是e0t的整數倍,那麼旋轉鋪開的形狀並不密閉,就像下圖這樣,下圖中的綠色波形最右側的線條沒有閉合,所以這個形狀的質心並沒落在原點

如果讓訊號持續的時間再長几倍,那麼這個不完整的形狀就會更趨於完整,從而質心離原點更近
這個現象非常像數字訊號處理中的頻譜洩露
視訊作者說他在下一個視訊中討論這個問題,按作者在YouTube釋出視訊的順序,"下個視訊"是這個視訊。依然建議大家關閉彈幕保護智商

 

如果要畫傅立葉變換的圖譜,橫軸為復指數頻率,那麼在平面上是做不到讓一維的縱軸表示視訊裡的質心的二維座標的。那就分出2個圖譜吧,縱軸分別是幅度和相移,這2個圖譜分別叫幅頻譜和相頻譜

 

 

 

傅立葉變換的缺陷

為了直觀,下面所有參與變換的訊號x(t)都是實訊號。看懂了實訊號,分析物理世界並不存在的覆信號也能觸類旁通

 

考慮從t=0開始由cosπtn(n為整數)個週期首尾拼接成的訊號x(t),用傅立葉變換計算x(t)裡e-jπt的幅度時
(1)如果n=1,原本鋪滿整個時間軸的積分割槽間就相當於是t從0到2,因為x(t)=0的時刻對積分無貢獻。記計算得到的e-jπt的"幅度"為|X1|
(2)如果n=2、讓時域波形振幅減半,積分割槽間相當於是t從0到4,是剛才的2倍,但由於振幅減半,所以積分表示式前面需要乘0.5,計算得到的e-jπt的"幅度"仍為|X1|
再按照傅立葉變換的公式算出上述2中情況下的相頻表示式,可得這2種情況下e-jπt的振幅、初始相位完全一樣,但顯然違背直覺

(3)如果取n=2,不改變波形振幅,則這時計算得到的e-jπt的"幅度"為2|X1|
(1)、(3)中x(t)中的cosπt的幅度根本沒有變化,變化的只是cosπt的週期數即積分割槽間,導致計算得到的|X(Ω)|變化了



顯然傅立葉變換計算出的|X(Ω0)|正比於x(t)非0時,頻率為Ω0的復指數訊號分量的幅度×持續時長

 

如果x(t)中Ω0分量鋪滿整個時間軸,例如x(t)=cos(Ω0t),那麼顯然根據公式計算得|X(Ω0)|趨於+∞
這時的x(t)顯然不滿足狄利克雷條件,按理說不能做傅立葉變換,但拿出傅立葉變換頻譜的物理意義,很容易畫出這時的x(t)的幅頻譜、相頻譜的形狀,不考慮幅頻譜中的譜線值的絕對值的話

是不是感覺很矛盾?|X(Ω)|並不能100%地反映x(t)非0的時間段內e-jΩt的幅度、不滿足狄利克雷條件的訊號也能有傅立葉變換

 

於是我去搜索為什麼傅立葉變換算出的幅度值無法絕對錶示訊號中的頻率分量的幅度,遺憾的是靠前的漢語搜尋結果沒一個符合我描述的意思

於是換用英語搜尋,看上去靠前的第1、4、5個英語搜尋結果都符合我描述的意思


我愛漢語,希望我們的漢語網際網路也能這麼開放互聯、資訊也能這麼豐富

儘管上圖中的英文搜尋結果裡的回答也是網友們寫的,不能算是絕對權威,但他們說的也很有道理。英文搜尋結果裡的回覆表達的意思與本文下面根據Adobe Audition的幅頻圖和其它必要資訊還原出時域訊號的方法相同。那麼難道說教科書上說的是錯的?
並不是。如果能寫出X(Ω)的表示式,那麼一定能唯一確定x(t)的形狀,這已被數學證明過,不會有錯

訊號與系統教科書裡講傅立葉變換的方式更像是數學家們思考的方式,和工程實際還有一定差別,和你能想象出的物理世界的實情也有一定差別,比如物理世界哪有cos(+∞t)?物理世界中當幅度小於一定值的時候,訊號已幾乎無法被測量到,但數學家告訴你,正是無數個這樣測不到的訊號分量導致了最終結果的巨大差異

 

接下來看看工程實際中是如何用傅立葉變換進行頻譜分析的。工程實際中廣泛運用計算機計算傅立葉變換,這涉及到數字訊號處理,本文不涉及到數字訊號處理

單看傅立葉變換的表示式無法判斷基的確切長度,因為只要基在t=0時相位為0、基的持續時間段蓋滿訊號的持續時間段,那麼積分結果就不會受到基的長度的影響
再看傅立葉逆變換的表示式x(t)=(∫-∞+∞X(Ω)e-jΩtdΩ)/2π。被積函式是X(Ω)e-jΩt,它鋪滿整個時間軸,即傅立葉變換的基鋪滿整個時間軸

 

基無限長是存在一些缺陷的,比如訊號當①沒鋪滿整個時間軸或②非週期或③週期非常長等等
以①舉例(其實剛才舉過),假設一首歌的時長是1分鐘,那麼把這首歌以鋪滿整個時間軸的不同頻率正弦函式為基進行分解,得到的結果無法反映某個具體的時刻下這首歌的特徵,例如在這首歌已經放完了的t=2分鐘時根本聽不到任何聲音,但傅立葉變換告訴你此時依然有各種頻率的分量,這顯然違背直覺

 

為什麼要把基設為鋪滿時間軸呢?我猜測是為了讓基嚴格滿足LTI系統的特徵訊號的條件,本文推薦的第3個視訊也表達了類似觀點
如果輸入訊號有限長,那麼輸入訊號從非0開始變為全0的片段,無法保證輸入給LTI系統後,輸出的訊號能保持原樣、最多隻存在幅度和相位的區別

 

但是在工程實際中沒必要總是把基設為鋪滿整個時間軸啊,持續1小時、1分鐘、半分鐘的1kHz聲音無法讓機器檢測出1kHz分量嗎,當然可以。但是持續1秒、0.5秒、0.00001秒就可能無法讓精密的機器檢測出了。所以這涉及到選定基的長度、參與變換的訊號片段長度的問題(本文提到的第3個視訊也討論過這個問題。這個問題類似於數字訊號處理裡的頻譜的物理解析度)
為了解決傅立葉變換的上述缺陷,於是有了短時傅立葉變換、小波變換。我搜到過很形象地演示小波變換的原理的文章,還排在搜尋引擎結果很靠前的位置,例如這篇

 

有的訊號,各頻率分量幅度的絕對值並不重要,而相對值很重要,例如語音訊號。顯然如果把某個語音訊號x(t)中所有的頻率分量的幅度全部同時擴大到相同倍數,就像扭動音響裝置控制檯的總音量旋鈕,那麼x(t)包含的資訊完全沒有變化,依然能聽出x(t)被放大之前所傳達的資訊

其實也很好理解:話筒把聲音轉成微弱的電訊號後,這個電訊號肯定會被模數轉換器(analog to digit converter,ADC)的前端電路處理得恰好鋪滿ADC的模擬輸入端的輸入範圍(其實不會恰好鋪滿,而是會留有一定裕量)以充分利用ADC的精度

對ADC和聽聲音的人來說,話筒轉換得到的電訊號的幅度的絕對值沒有意義。用專業些的音訊處理軟體Adobe Audition來舉例:

Audition的傅立葉變換是短時傅立葉變換(其實是數字訊號處理裡的離散傅立葉變換,不過離散傅立葉變換選用的訊號片段長度確實是"短時"的),每次變換所用的訊號並不是整個音訊檔案,而是可以由使用者設定使用多長的訊號片段,現在只關注Audition的幅頻圖的縱軸

Audition的幅頻圖的縱軸標註的刻度以分貝(decibel,簡稱dB)為單位,分貝可以表示倍數。工程中出現的倍數可能在末尾或者緊挨著小數點右側有非常多的0,為了讓人類看這樣的倍數時不用把精力浪費在仔細地數0的個數上,於是分貝誕生了
如果用分貝表示2個電壓值U1U2之間的倍數關係,那麼可以把U1定義為0dB,計算出U2=20lg(U2/U1)dB
如果用分貝表示2個功率值P1P2之間的倍數關係,如果把P1定義為0dB,計算P2時,卻應該是P2=10lg(P2/P1)dB,因為如果用電壓U表示功率PP正比於U2U擴大至k倍後,P會擴大至k2倍,P已暗含了平方關係,類似地,用分貝表示暗含了平方關係的物理量之間的倍數關係時,對數式前乘的係數都是10


再看上圖:縱軸刻度的最大值是0dB=1倍,縱軸向下是負的分貝
所以Audition的幅頻譜把能達到的最大幅度定為0dB,其它幅度的值根據它相對於0dB的比例計算出。這個幅頻譜沒有反映頻率分量幅度的絕對值,而反映了相對值。這樣反映出的幅度也叫歸一化(normalized)幅度,就是把最大的值定為1,其它值根據它佔最大值的比例算得。同學們以後會經常碰到"歸一化"這個詞
如果頻率分量的幅度的絕對值重要、而幅頻譜仍然像Audition的這樣只給出各頻率分量幅度的相對值,那就再規定幅頻譜裡的0dB表示的絕對值是多少,這樣就能算出所有頻率分量幅度的絕對值啦;再拿到相頻譜、規定參與變換的時域訊號的長度,那麼就一定能還原出時域訊號。注意看這段話裡的紅色字,它們都是工程實際中還原出時域訊號必備的資訊,缺一不可

 

 

 

濾波器

再來看前面的音訊均衡器的例子,圖中推子的連線像不像幅頻曲線?

一些音樂軟體有音質優化功能,這個功能裡預設了一些效果曲線,比如一些預設效果叫室內、KTV、金屬、人聲等等,每個預設效果都對應著一條聲音調整曲線。可以說每個預設效果都是一個濾波器(filter),預設效果對應的聲音調整曲線就是這個濾波器的幅頻圖
濾波器是訊號處理領域非常重要的研究課題,LTI系統就是典型的濾波器
濾波器嘛,顧名思義,濾除不想要的波形用的。其實不止濾除波形,濾波器還能提升需要的波形的幅度。都說了幅頻圖裡的譜線的絕對值不重要,只提升想保留的頻率的幅度算不算是抑制不想要的頻率的幅度?

 

 

 

計算傅立葉變換時的一些細節問題

本節進行變換時把時域訊號當作無窮長,選用的基也鋪滿整個時間軸。反正你的作業和考試就是這麼設定的
同樣為了直觀,參與變換的訊號x(t)依然是實訊號

以復指數訊號為基分解實訊號,為了讓這些基最終擬合出的虛部是0,那麼顯然頻率互為相反數的復指數訊號的幅度相同、瞬時相位互為相反數(你要說幅度互為相反數、瞬時相位相同也沒錯,但習慣上不這麼說)

 

x(t)是週期訊號,不妨設x(t)=cost+2cos2t

如果用短時傅立葉變換:根據傅立葉變換的物理意義,傅立葉變換的基是鋪滿整個時域的不同頻率的單頻復指數訊號,顯然幅頻圖中復指數頻率1、-1、2、-2的譜線長度非0,且1、-1的譜線長度是2、-2的譜線長度的一半,其它所有復指數頻率的譜線長度都是0,規定復指數頻率Ω=1的分量的幅度是1;幅度非0的復指數頻率的初始相位都是0;選用的基鋪滿整個時間軸

按照教科書教的計算:這個訊號完全不滿足狄利克雷條件,但是引入衝激訊號δ(t)之後,可以認為復指數頻率1、-1的幅度是δ(t)、復指數頻率2、-2的幅度是2δ(t);幅度非0的復指數頻率分量的初始相位都是0。即復指數頻率為1的分量的幅度是1個單位的+∞、復指數頻率為2的分量的幅度是2個單位的+∞

 

x(t)仍然是週期訊號,不妨設週期是T0

幅頻圖上,非0的正弦頻率的頻率一定是1/T0 Hz的整數倍,其它頻率處嚴格為0,否則x(t)的週期不可能是T0。幅頻圖中的1/T0 Hz、2/T0 Hz、3/T0 Hz、……、n/T0 Hz的分量就是x(t)中的基波、二次諧波、三次諧波、……、n次諧波
這就是"時域週期則頻域離散、非週期"
同上,基波和各次諧波的幅度都是(t),k是常數

 

x(t)有限長

用鋪滿整個時間軸的基去擬合有限長的訊號,看上去無法在x(t)徹底為0的時刻嚴格地擬合得到0,所以必須提升擬合精度,即頻譜圖鋪滿整個頻率軸
這時一個數學家跳出來說:我說基取遍所有頻率能嚴格擬合物理世界的所有訊號就能嚴格擬合
咱又不能真的實現"把所有頻率的鋪滿整個時間軸的基都取遍,加起來看看是不是有限長的x(t)的時域波形",那麼數學家說是就是吧,工程師和物理學家不都只有經常從數學家的樂(lè)色桶裡撿樂色才能維持的了研究