從數學上講,卷積就是一種運算。定義函數 $f,g$ 的卷積 $(f * g)(t)$ 如下
1. 連續形式:
$$(f*g)(t) = \int_{-\infty}^{+\infty}f(\tau)g(t - \tau)d\tau$$
那這個怎么理解呢?
函數 $g(t)$ 可以理解為沖擊響應,即一個沖擊信號經過一個線性系統后產生的輸出函數,假設它的圖像長成下面這個樣子:
在 $0$ 時刻輸入了一個沖擊信號,這個作用是瞬時的,但是它產生的影響不是瞬時的,而是一個持續性的后果,從上圖可以觀察到,$0$
時刻接收到沖擊信號后立馬產生了一個 $w_{0}$ 的影響,然后這個影響不斷衰退,直到 $0$,舉個例子:某個時刻打了你一巴掌,一開始很疼,
然后痛感逐漸減弱,$g(t)$ 就是痛感隨時間變化的函數。
假設現在打了你無數個巴掌,那怎么計算出某個時刻你的痛感呢?先考慮一個簡單的情形,每次打巴掌的時間間隔大於 $T$,如下圖
這種情況下,因為沒有重疊,所以只要知道打巴掌的時間和效果函數 $g(t)$,就很容易可以得到疼痛感,但假如沒等到 $T$ 就連續打了多個巴掌呢?
在時刻 $0$,$t_{1}$,$t_{2}$ 分別輸入了三個沖擊信號,即打了三巴掌,現在計算時刻 $a$ 的痛感。很明顯越早打巴掌,到時刻 $a$ 時痛感越弱。
根據線性系統的性質可知,痛感具有疊加性,於是時刻 $a$ 的痛感為
$$g_(a - 0) + g_(a - t_{1}) + g_(a - t_{2})$$
回到卷積公式,$g(t - \tau)$ 就表示在 $\tau$ 時刻打了一巴掌,這一巴掌在 $t$ 時刻時的痛感(有衰減)。
現在更進一步,在 $-\infty-+\infty$ 區間的任一時刻,我都可能打你一巴掌,相同的時刻可能連打好幾巴掌,那么怎么計算時刻 $t$ 的痛感?
將函數 $f(t)$ 理解為沖擊信號輸入的速度,即打巴掌的速度,那怎么求某個時刻 $\tau$ 打了多少巴掌?這里可以用極限逼近的思想。
設 $\tau - \varepsilon < \tau < \tau + \varepsilon$,當 $\varepsilon \rightarrow 0$ 時,就認為是勻速打巴掌,那么時刻 $\tau$ 打的巴掌數為
$$\lim_{\varepsilon \rightarrow 0}f(\tau) \cdot 2\varepsilon$$
因為痛感可以疊加,所以每個時刻在 $t$ 產生的痛感為
$$\sum \lim_{\varepsilon \rightarrow 0}f(\tau) \cdot 2\varepsilon \cdot g(t - \tau) = \int_{-\infty}^{+\infty}f(\tau)g(t-\tau)d\tau$$
2. 離散形式:
$$(f*g)(t) = \sum_{\tau = -\infty}^{+\infty}f(\tau)g(t - \tau)$$
類比於連續的情況,區別是這里的 $f(\tau)$ 直接理解為沖擊信號在時刻 $\tau$ 輸入的次數(在時刻 $\tau$ 打的巴掌數),而不是沖擊信號輸入的速度。
綜上:系統的輸出不僅與系統在 $t$ 時刻的響應有關,還與它在 $t$ 時刻之前的響應有關,不過系統有個衰減過程,$\tau < t$ 時刻的輸入在 $t$ 時刻
對輸出的影響可以表示為 $f(\tau)g(t-\tau)$,這個過程可能是離散的,也可能是連續的,所以 $t$ 時刻的輸出應該為 $t$ 時刻之前系統響應函數
在 $t$ 時刻響應的疊加,這便是卷積。