定义
理解
在打游戏的时候,假设你对敌方英雄造成了一次攻击。攻击的效果是,地方英雄会在接下来5秒内持续增长的掉血。每秒掉血分别为1 2 3 4 5;那么你在0秒的时候攻击了一下敌方英雄,敌方英雄的掉血情况为:
抽象一下。假设x[k]是一个单位信号(一次攻击),即仅当k=0时x(k) = 1.假设把这个信号输入到一个系统里面得到的响应为h[n]:
同样,假设你在第2秒对地方英雄进行了攻击,则敌方英雄会在地2-7秒持续掉血。
由于攻击不是在第0秒,而是在第二秒,因此,产生伤害也是从第二秒开始。使用函数位移的想法了解释,则本来第0秒产生的伤害右移了两个单位,变成了h[n-2]:
那么,如果第0秒和第2秒都进行了攻击,伤害是怎样的呢?当然是第0秒的伤害加上第2秒的伤害,即:
那么,对于任意形式的攻击x[k],很容易推广到,产生的伤害y[n]计算方法为:
这就是卷积的公式。解释很简单,就是对任意的攻击x[k],产生的伤害就是,把所有k时刻的攻击产生的伤害h[n-k]都叠加起来了。
那么,如果我想知道,对与任意的攻击方式,敌方英雄某一秒(比如第3秒)受到的伤害是怎样的呢?
即,对于输入x[k],任意一个y[n]点的伤害是怎样的呢?
我把不同k时候的关于n的函数h[n-k]全部画出来。如上图中不同的纵轴表示。那第三秒敌方英雄收到的伤害y[3]等于x(0) h(3)+ x(1) h(3-1)+ x(2) h(3-2)+ x(3) h(3-3).
针对离散信号 卷积就是线性组合
卷积y[n] = x[n] * h[n],可以理解为,将y[n]分为不同的 分量为h[n-k]、系数为x[k]的线性组合。也就是说,y[n]是一系列关于h[n]移位后的h[n-k],每个函数h[n-k]乘上特定的系数x[k] 组合而成的函数。这种 “用一组函数进行线性组合得到目标函数”的理念,在傅里叶分析中也有应用:将原始信号y[n],分为一系列谐波信号e^(jkwn)的函数的线性组合。
到这里会发现,卷积和傅里叶分析的一个相同的理念:
用不同的函数的线性组合,表示原信号。
傅里叶分析用的是不同的正弦函数的线性组合;
而卷积,用的是h[n]移位不同的k得到的一系列h[n-k]的线性组合。
卷积的应用
再举例理解
References:
https://www.zhihu.com/question/22298352
https://www.zhihu.com/question/22298352/answer/257790355