在卷积的定义中为何函数g(τ)要先翻转为g(-τ)再平移为g(x-τ)而不是直接记做g(τ-x)这样作有什么好处么? 函数
我知道问一个概念的定义就好像问"妈妈"为何要叫"妈妈"同样。但我始终以为这样的定义有些别扭。想知道这样作背后的意义。 spa
做者:中微子 blog
连接:http://www.zhihu.com/question/20500497/answer/45708002 get
来源:知乎 io
不要试图直接从公式上去思考"翻转"的意义,回到问题的起源,你就会豁然开朗了。 原理
打个比方,往平静的水面里面扔石头。咱们把水面的反应看做是一种冲击响应。水面在t=0时刻石头丢进去的时候会激起高度为h(0)的波纹,但水面不会立马归于平静,随着时间的流逝,波纹幅度会愈来愈小,在t=1时刻,幅度衰减为h(1), 在t=2时刻,幅度衰减为h(2)……直到一段时间后,水面重复归于平静。 im
从时间轴上来看,咱们只在t=0时刻丢了一块石头,其它时刻并无作任何事,但在t=1,2….时刻,水面是不平静的,这是由于过去(t=0时刻)的做用一直持续到了如今。 db
那么,问题来了: img
若是咱们在t=1时刻也丢入一块石子呢?此时t=0时刻的影响尚未消失(水面尚未恢复平静)新的石子又丢进来了,那么如今激起的波浪有多高呢?答案是当前激起的波浪与t=0时刻残余的影响的叠加。那么t=0时刻对t=1时刻的残余影响有多大呢? di
为了便于说明,接下来咱们做一下两个假设:
1. 水面对于"单位石块"的响应是固定的
2. 丢一个两倍于的"单位石块"的石块激起的波纹高度是丢一个石块的两倍(即系统知足线性叠加原理)
如今咱们来计算每一时刻的波浪有多高:
y(0)=x(0)*h(0);
当前石块引发的影响x(1)*h(0);
t=0时刻石块x(0)引发的残余影响x(0)*h(1);
y(1)=x(1)*h(0)+ x(0)*h(1);
当前石块引发的影响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);
……
当前石块引发的影响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向左看的做用影响相对应(都是愈来愈远的过去),做用与做用的响应就对应起来了,这一切的本质,是由于你站立的时间观察点和方向在变。