訊號卷積(線性卷積)

2022-07-12 21:30:27 字數 1958 閱讀 8426

從數學上講,卷積就是一種運算。

定義函式 $f,g$ 的卷積 $(f * g)(t)$ 如下

1. 連續形式:

$$(f*g)(t) = \int_^f(\tau)g(t - \tau)d\tau$$

那這個怎麼理解呢?

函式 $g(t)$ 可以理解為衝擊響應,即乙個衝擊訊號經過乙個線性系統後產生的輸出函式,假設它的影象長成下面這個樣子:

在 $0$ 時刻輸入了乙個衝擊訊號,這個作用是瞬時的,但是它產生的影響不是瞬時的,而是乙個持續性的後果,從上圖可以觀察到,$0$ 

時刻接收到衝擊訊號後立馬產生了乙個 $w_$ 的影響,然後這個影響不斷衰退,直到 $0$,舉個例子:某個時刻打了你一巴掌,一開始很疼,

然後痛感逐漸減弱,$g(t)$ 就是痛感隨時間變化的函式。

假設現在打了你無數個巴掌,那怎麼計算出某個時刻你的痛感呢?先考慮乙個簡單的情形,每次打巴掌的時間間隔大於 $t$,如下圖

這種情況下,因為沒有重疊,所以只要知道打巴掌的時間和效果函式 $g(t)$,就很容易可以得到疼痛感,但假如沒等到 $t$ 就連續打了多個巴掌呢?

在時刻 $0$,$t_$,$t_$ 分別輸入了三個衝擊訊號,即打了三巴掌,現在計算時刻 $a$ 的痛感。

很明顯越早打巴掌,到時刻 $a$ 時痛感越弱。

根據線性系統的性質可知,痛感具有疊加性,於是時刻 $a$ 的痛感為

$$g_(a - 0) + g_(a - t_) + g_(a - t_)$$

回到卷積公式,$g(t - \tau)$ 就表示在 $\tau$ 時刻打了一巴掌,這一巴掌在 $t$ 時刻時的痛感(有衰減)。

現在更進一步,在 $-\infty-+\infty$ 區間的任一時刻,我都可能打你一巴掌,相同的時刻可能連打好幾巴掌,那麼怎麼計算時刻 $t$ 的痛感?

將函式 $f(t)$ 理解為衝擊訊號輸入的速度,即打巴掌的速度,那怎麼求某個時刻 $\tau$ 打了多少巴掌?這裡可以用極限逼近的思想。

設 $\tau - \varepsilon < \tau < \tau + \varepsilon$,當 $\varepsilon \rightarrow 0$ 時,就認為是勻速打巴掌,那麼時刻 $\tau$ 打的巴掌數為

$$\lim_f(\tau) \cdot 2\varepsilon$$

因為痛感可以疊加,所以每個時刻在 $t$ 產生的痛感為

$$\sum \lim_f(\tau) \cdot 2\varepsilon \cdot g(t - \tau) = \int_^f(\tau)g(t-\tau)d\tau$$

2. 離散形式:

$$(f*g)(t) = \sum_^f(\tau)g(t - \tau)$$

模擬於連續的情況,區別是這裡的 $f(\tau)$ 直接理解為衝擊訊號在時刻 $\tau$ 輸入的次數(在時刻 $\tau$ 打的巴掌數),而不是衝擊訊號輸入的速度。

綜上:系統的輸出不僅與系統在 $t$ 時刻的響應有關,還與它在 $t$ 時刻之前的響應有關,不過系統有個衰減過程,$\tau < t$ 時刻的輸入在 $t$ 時刻

對輸出的影

響可以表示為 $f(\tau)g(t-\tau)$,這個過程可能是離散的,也可能是連續的,所以 $t$ 時刻的輸出應該為 $t$ 時刻之前系統響應函式

在 $t$ 時刻響

應的疊加,這便是卷積。

迴圈卷積與線性卷積

迴圈卷積 針對的是兩個長度都為n的序列,對兩個序列做fft,然後再做ifft得到的結果就是迴圈卷積,結果的長度也是n。直接計算步驟 序列a與序列b,長度都是n,新的序列c 1 把b倒過來。翻轉 2 把b向右平移乙個元素。最右側的元素補到左邊。3 計算此時a和b對應元素的積的和。將其加到c的末尾。4 ...

迴圈卷積和線性卷積的關係

迴圈卷積和線性卷積的關係 一般訊號處理濾波器 時域資料 與 濾波器係數的線性卷積,但卷積的運算量比較大,所以用頻域的相乘來替代時域卷積,而頻域的相乘等於時域迴圈卷積,所以要有乙個迴圈卷積和線性卷積轉換的過程,如下matlab例子 x 3 2 1 2 5 y 7 1 8 5 1 n length x ...

C語言實現線性卷積和圓周卷積

已知x n 求x n x n x n x n x n x n include graphics.h include include include include 線性卷積 void conv int x,int y else if m 4 m 0 else y n 1 x m x s 圓周卷積 n...