1. 程式人生 > 其它 >數字訊號處理學習筆記——線性卷積

數字訊號處理學習筆記——線性卷積

在訊號處理的學習過程中,往往都會學習到,一個訊號過一個線性時不變系統,輸出的訊號即為這個訊號與系統的單位衝激響應在時域上線性卷積。最近,有一位好友問我到底為什麼與單位衝激響應卷積後就得到了訊號過系統的輸出,本篇學習筆記將以一個淺顯易懂的例子說明這一點。
首先看線性卷積的定義,若要使\(x(n)\)通過一個單位衝激響應為\(h(n)\)的系統,那麼其輸出的\(y(n)\)則為\(x(n)\ast h(n)\)

\[y(n)=x(n)*h(n)= \sum _{k=-\infty}^{+\infty} h(k)x(n-k) \]

從公式可以看出,卷積就是將序列的翻轉、移位、相乘和相加,運算結果稱為卷積和。
此時,我們以兩個簡單的序列卷積為例,解釋卷積。
我們另\(x(n)為\{1,1,0,1\}\)

,另外另系統為\(y(n)=x(n)+x(n-1)+(n-2)\),這個系統的單位衝激響應非常好求,也就是直接把脈衝函式帶入\(x(n)\),易得\(h(n)=\delta(n)+\delta(n-1)+\delta(n-2)\),也就是\(h(n)\)\(\{1,1,1\}\)
這個系統的物理意義也可以有多種解釋,這裡給出一個通俗易懂的理解。俗話說,以直報怨,而人的反應就可以理解為一個系統,有輸入有輸出,我假定你是一個線性時不變的系統,並且\(y(n)=x(n)+x(n-1)+(n-2)\),你的單位衝激響應就為\(\{1,1,1\}\)
注:matlab繪圖中的1時刻即為本文中的零時刻。

那麼,我在0時刻打了你一拳,你這個系統就會在0 1 2時刻分別打我一拳,總共打三拳。同時這一響應也就是單位衝激響應。

如果我在1時刻又打了你一拳,那麼按照你線性時不變的性質,你就會在1 2 3時刻又分別打我一拳。

你就會發現,疊加上時刻0時的響應,你在1和2時刻會打我兩拳,0和3時刻則是一拳。

而我在時刻2沒有出拳,你也不會有響應。我在3時刻又出拳了,那麼你又會在3 4 5時刻分別打我一拳。

那麼,我按照{1,1,0,1}\(,幾個不同時刻你的響應相互之間疊加。你從零時刻開始,對我出拳即為輸出\)y(n)\(,為\){1,2,2,2,1,1}$。

同樣,如果輸入的強度有所變化,我在一個時刻打你兩拳,你也會在此時刻以及後面兩個時刻上分別打我兩拳。
因此,我們將輸入序列翻轉、移位,可以看作使序列按照時間順序輸入系統中。相乘體現不同時刻的輸入強度,相加則是將不同時刻的輸入得到的響應求和。

一樣能夠得到: