卷积理解起来还是十分抽象的,看了很多资料才算一知半解吧,以下贴出。
只要接触过卷积的人一定会知道“反褶、平移、积分”这句话,大部分人解释卷积也是靠这句话,但这句话非常空洞,卷积又是一个十分抽象的东西,我也被此困扰好久,别人要是问对卷积的理解,也就只能回答“反褶–平移–积分”,往深处挖就不知道了,实在是尴尬。所以下面我将从卷积的定义、卷积的计算、卷积的应用等几个方面说明。
卷积的定义
补充单位脉冲和单位脉冲响应的定义
单位脉冲:
下面是在matlab中的波形图
单位脉冲响应:当系统的初始状态为零时,这时给系统输入一个单位脉冲序列 x(t)=δ(t) ,则系统的输出称为单位脉冲响应,简称脉冲响应,用符号 h(t) 表示。(注意 δ(t) 面积为1)。
正式步入卷积。先给出定义式,再一步步解释(这里只讨论线性时不变系统下连续的定义)
下面以图来解释这个式子怎么来的:
图中左边为输入信号,左边为系统的输出。
(a)中,输入信号 p(t) 经过系统后得到输出信号 h(t) ;
(b)中,输入信号较之于(a)延迟了 τ ,表示为 p(t−τ) ,由于是LTI(线性时不变系统),输出信号也延迟 τ ,变为 h(t−τ) ;
(c)、(d)两图阐释了LTI的叠加原理:若以 p(t)+p(t−τ) 为输入,则输出为 h(t)+h(t−τ) ;
假设现在有一个输入信号
μ(t)
,将其表示为若干个我们刚刚见过的
p(t)
的叠加。
注意:定义 pΔ(t) 和 hΔ(t) ,当 Δ→0 时趋近于 δ(t) 和 h(t) 。(同样注意 pΔ(t) 的高度为 1Δ ,面积为 1)
所以输入信号
μ(t)
可以拆分成很多
pΔ(t)
的和。
输出信号:
得到 y(t) 的过程就可以看做一个加权叠加的过程。
用 p(t) 表示的 μ(t) 并不是精确的 μ(t) 啊,那些小长条的面积比 μ(t) 的面积可少了不少呢。除非 Δ 尽可能的小,长条尽可能的窄。这就是联想到积分了。
下面是由上面的
y(t)
转化为积分的过程。
令
iΔ=τ
,作转化
Δ=1i⋅τ
。则上式就可转化如下:
因此就有积分式:
(取负无穷是考虑到当前时刻前已经有输入了)
以上是卷积的定义,也就是卷积式的由来。
卷积的计算
前面我们说过很多人用“反褶、平移、积分”来描述卷积,前面已经阐述了卷积定义,这里,更倾向于把这句话当做是计算卷积的过程而不是来解释卷积。
首先看一张图:
有俩个输入信号 f(t) 和 g(t) 。以下卷积具体步骤。
1、改变图中横坐标,由 t 改为 τ , τ 就变成函数的自变量。
2、把其中的一个信号反褶,如图中矩形框框出来的部分。
3、把反褶的信号作位移,位移量为 t ,如上图。
4、位移,并将俩信号量重叠部分相乘 f(τ)⋅g(t−τ) 。
5、完成相乘后图形的积分(其实也就是俩信号重叠部分的面积)。
下面再贴出wiki上的动图,更易理解:
黄色区域是重叠面积,新生成的曲线是时间
t
的函数。也就是卷积的这种表述形式:
卷积的应用
卷积的应用非常多,这里拿图像处理中使用卷积为例。
在matlab中,我们常用的卷积计算函数有conv和conv2。下面就分别介绍
conv2
conv2是二维矩阵卷积运算。conv2的具体实现步骤可以参见这篇博文。我们再对输入图像使用卷积时候滤波器的大小最好为奇数,这样它才有一个中心(高斯模糊卷积矩阵一般选用
3×3
或
7×7
)。
如下图,对图像进行卷积运算和以很清晰的检测出边缘
conv
conv是向量间卷积运算。它的参数跟conv2是一样的。
一般向量间的卷积计算我们可以这样理解:
如
u=[131]
和
v=[27]
,我们把向量
u
内元素写成多项式升幂排列
x2+3x+1
,同理向量
v
内元素也以升幂排列
2x2+7
,我们将俩个多项式相乘,结果也是按升幂排列
2x3+13x2+23x+7
。所以卷积得到的结果是
[213237]
。在matlab中验证如下:
参考:
知乎中卷积的通俗解释
wiki中卷积的解释