卷積、反捲積簡析與其矩陣實現
本文關注數字信號的卷積、反捲積基本概念的理解與矩陣實現
卷積
LTI(線性時不變)系統常用卷積來表徵。卷積的定義為:
這個描述加上公式,如同一記悶棍,直接把很多初學者打翻在地。類似的形式很多教材都在用,我當年深受其害。
下面提供一個思路來理清卷積與LTI的概念與關聯。
LTI (線性時不變系統)這個名字裏就包含了它的兩個關鍵概念。
線性
假設輸入1,輸出2。如果輸入3,那麼輸出就是6。輸入增加,輸出等比例增加,就是線性。
時不變
如果t=0時刻輸入x[0]=1,輸出y[0]=2。那麼t=1時刻輸入x[1]=1, 輸出y[1]=2。不同的時刻給以相同的輸入,系統會做出相同的反應,就是時不變。
卷積計算過程
通過一個例子來理解一下計算過程(自己用筆寫一下效果更好)。
假設一個系統的衝激響應(impulse response)是h[n]=[3, 2, 1]。(為了簡便使用整數)
意思是如果輸入x[0]=1,則輸出y[0]=3; y[1]=2; y[2]=1。(就是這麼拖泥帶水,如果每個輸入只產生一個輸出,就用不到卷積了)
如果給一串輸入會怎樣呢?例如x[n]=[2, 0, 1] ,過程是這樣的:
t=0: 輸入x[0]=2,輸出應為y[0]=6,(「線性」特點:輸入翻倍,輸出翻倍)
t=1: 輸入x[1]=0,無輸入,對應無輸出,但因為還殘留對x[0]的響應,所以輸出y[1]=4
t=2: 輸入x[2]=1,對應輸出y[2]=3,(「時不變」特點:無論何時輸入同樣的內容,會有同樣的響應),同時系統此時仍殘留對x[0]的響應為2,所以最終輸出y[2]=3+2=5.(再次應用「線性」特點)
t=3/t=4時刻,系統已沒有輸入,只有殘留的對x[2]的響應,所以輸出y[3]=2, y[4]=1.
所以結果是,x[n]=[2, 0, 1]輸入到衝激響應為h[n]=[3, 2, 1]的系統中,產生了輸出y[n]=[6, 4, 5, 2 ,1]。這個結果與應用卷積公式算得的結果是一樣的。
所以卷積並不是什麼神奇的操作,本質是一個時刻的輸入產生一串輸出,它下一時刻的輸出疊加(線性)到對下一時刻的輸入的響應(時不變)上了。或者換個說法是,當前時刻的輸出,除了對當前輸入的響應之外,還要加上之前輸入的影響。
反捲積
反捲積就是卷積的逆運算,已知輸出y[n]和衝激響應h[n],求輸入x[n]的過程,或者已知輸入輸出求衝激響應。過程不贅述。
卷積與反捲積的矩陣實現
根據前面所說的卷積計算概念,可以有以下兩種實現方法: