在卷積的定義中爲何函數g(τ)要先翻轉爲g(-τ)再平移爲g(x-τ)而不是直接記做g(τ-x)這樣作有什麼好處麼? 函數
我知道問一個概念的定義就好像問"媽媽"爲何要叫"媽媽"同樣。但我始終以爲這樣的定義有些彆扭。想知道這樣作背後的意義。 blog
不要試圖直接從公式上去思考"翻轉"的意義,回到問題的起源,你就會豁然開朗了。 原理
打個比方,往平靜的水面裏面扔石頭。咱們把水面的反應看做是一種衝擊響應。水面在t=0時刻石頭丟進去的時候會激起高度爲h(0)的波紋,但水面不會立馬歸於平靜,隨着時間的流逝,波紋幅度會愈來愈小,在t=1時刻,幅度衰減爲h(1), 在t=2時刻,幅度衰減爲h(2)……直到一段時間後,水面重複歸於平靜。 im
從時間軸上來看,咱們只在t=0時刻丟了一塊石頭,其它時刻並無作任何事,但在t=1,2….時刻,水面是不平靜的,這是由於過去(t=0時刻)的做用一直持續到了如今。 img
那麼,問題來了: 時間
若是咱們在t=1時刻也丟入一塊石子呢?此時t=0時刻的影響尚未消失(水面尚未恢復平靜)新的石子又丟進來了,那麼如今激起的波浪有多高呢?答案是當前激起的波浪與t=0時刻殘餘的影響的疊加。那麼t=0時刻對t=1時刻的殘餘影響有多大呢? 思考
爲了便於說明,接下來咱們做一下兩個假設: co
1. 水面對於"單位石塊"的響應是固定的 ps
2. 丟一個兩倍於的"單位石塊"的石塊激起的波紋高度是丟一個石塊的兩倍(即系統知足線性疊加原理) ab
如今咱們來計算每一時刻的波浪有多高:
t=0時刻:
y(0)=x(0)*h(0);
t=1時刻:
當前石塊引發的影響x(1)*h(0);
t=0時刻石塊x(0)引發的殘餘影響x(0)*h(1);
y(1)=x(1)*h(0)+ x(0)*h(1);
t=2時刻:
當前石塊引發的影響x(2)*h(0);
t=0時刻石塊x(0)引發的殘餘影響x(0)*h(2);
t=1時刻石塊x(1)引發的殘餘影響x(1)*h(1);
y(2)=x(2)*h(0)+ x(1)*h(1)+x(0)*h(2);
……
t=N時刻:
當前石塊引發的影響x(N)*h(0);
t=0時刻石塊x(0)引發的殘餘影響x(0)*h(N);
t=1時刻石塊x(1)引發的殘餘影響x(1)*h(N-1);
y(N)=x(N)*h(0)+ x(N-1)*h(1)+x(N-2)*h(2)+…+x(0)*h(N);
這就是離散卷積的公式了
理解了上面的問題,下面咱們來看看"翻轉"是怎麼回事:
當咱們每次要丟石子時,站在當前的時間點,系統的對咱們的迴應都是h(0),時間軸以後的(h(1),h(2).....)都是對將來的影響。而總體的迴應要加上過去對於如今的殘餘影響。
如今咱們來觀察t=4這個時刻。
站在t=0時刻看他對於將來(t=4)時刻(從如今日後4秒)的影響,可見是x(0)*h(4)
站在t=1時刻看他對於將來(t=4)時刻的影響(從如今日後3秒),可見是x(1)*h(3)
站在t=2時刻看他對於將來(t=4)時刻的影響(從如今日後2秒),可見是x(2)*h(2)
站在t=3時刻看他對於將來(t=4)時刻的影響(從如今日後1秒),可見是x(3)*h(1)
因此所謂的翻轉只是由於你站立的如今是過去的將來,而由於h(t)始終不變,故h(1)實際上是前一秒的h(1),而前一秒的h(1)就是如今,因此從當前x(4)的角度往左看,你看到的是過去的做用。h(t)未翻轉前,當從h(0)往右看,你看到的是如今對於將來的影響,當翻轉h(t)以後,從h(0)往左看,你依次看到的愈來愈遠的過去對如今的影響,而這個影響,與從x=4向左看的做用影響相對應(都是愈來愈遠的過去),做用與做用的響應就對應起來了,這一切的本質,是由於你站立的時間觀察點和方向在變。