为什么要做信号卷积

首先先看下面这张图

Python实现信号分解算法 python信号卷积_数字信号


学过信号与系统的同志们肯定知道:

Python实现信号分解算法 python信号卷积_点对点_02

我们通过数字信号的方法来说明卷积是如何来的,以及为什么要做卷积!

首先对输入信号x(t)进行采样,{x[n]} = {1 , 1, 1},

同时系统的冲激响应{h(n)}={1, 0.5 , 0.25}。

人们的第一印象是:输出信号y(n)是对应点相乘即可,即{y(n)}={1,0.5,0.25}.
显然这是经典的错误,标准的零分。
那么为什么不能这样做呢?

我们可以举一个简单的例子:在炎热的夏天,我们可以使用电风扇纳凉,在某一时刻,我们给电风扇一定的激励电压,显然风扇会转动起来,然后在下一时刻,我们断电,风扇的扇叶会立刻停止机械运动吗?很多有生活常识的同志立刻反应过来了,风扇在突然断电后,会继续机械运动一段时间后停止。也就是说,风扇这个系统在某一时刻的输出不仅与当前的激励有关还与过去的激励有关,换句话说,风扇系统的输出是过去和现在输入导致的输出的叠加状态!

话说到这里,也就解释了为什么输出信号y(n)不能直接由输入信号x(n)和冲激响应h(n)点对点相乘,因为点对点相乘的运算方法不能体现过去输入导致的当前状态的叠加。同时,这也解释了为什么两个序列做完卷积后的长度要更长一点,就是因为过去某一时刻的输入对当前的输出仍有影响,即使当前没有输入,也必须有过去输入导致的当前的输出。

可能听起来仍然有些绕口,想要彻底理解还需要做一个简单的例子来说明。
输入信号:{x(n)}={1};
冲激响应:{h(n)}={1,0.8,0.6,0.4,0.2,0}。

我们在n=0时刻输入1,代表我们给风扇激励电压

按照点对点相乘的方法来计算:输出信号{y(n)}={1}。也就是仅在n=0时刻风扇转动,在n=1时刻立即停止转动,显然这并不可能且不符合生活常识和逻辑,因此点对点的计算方法是的。

按照卷积的计算方法:输出信号{y(n}={1,0.8,0.6,0.4,0.2,0},这代表着n=0时刻,风扇以速度1转动,在n>0的时刻里,风扇的转动速度由1逐渐衰减到0,这是符合生活实践的,因此卷积的计算方法是正确的。