卷积的困惑
卷积这个概念,在复变函数与积分变换里面提到过,而在处理信号的时候应用广泛,在书里给出了定义与各种性质,也给出了实例与图解法求卷积,但是为什么要这么设计,这么计算背后的意义是什么,往往语焉不详。
教科书中一般定义函数 f , g f,g f,g的卷积 f ∗ g ( t ) f*g(t) f∗g(t)如下:
连续形式:
f
(
t
)
∗
g
(
t
)
=
∫
−
∞
∞
f
(
τ
)
g
(
t
−
τ
)
d
τ
f(t)*g(t)=\int_{-\infty}^\infty f(\tau)g(t-\tau)d\tau
f(t)∗g(t)=∫−∞∞f(τ)g(t−τ)dτ
离散形式:
f
(
t
)
∗
g
(
t
)
=
∑
τ
=
−
∞
∞
f
(
τ
)
g
(
t
−
τ
)
f(t)*g(t)=\sum_{\tau=-\infty}^{\infty}f(\tau)g(t-\tau)
f(t)∗g(t)=τ=−∞∑∞f(τ)g(t−τ)
并且也说明了,现将 g ( t ) g(t) g(t)进行翻转,相当于在数轴上把 g g g以纵轴为轴翻转180度,然后再把 g g g右移 t t t,再把 g g g和 f f f相乘,然后相加或者求下围面积。
但是这个样子,只是从计算上解释了卷积的公式。从数学上讲没有bug,但是这个样子能看懂,但是理解不了啊。那么该怎么理解它呢?
吃饭与消化中的卷积
正常吃饭
我们就拿吃饭与人体的消化作为例子,来讲解一下。
首先假设一个人名为甲,一日食三餐,早上6点,中午12点和下午六点各食一餐,如下图所示,并将此定义为
f
(
t
)
f(t)
f(t):
再次假设人吃进去东西,过了时间t剩下的量的函数如下图所示,并将此定义为
g
(
t
)
g(t)
g(t):
现在问题来了,甲到了该日的24点整的时候,肚子里还剩多少东西?
我们来慢慢分析一下,甲在6点吃了东西,吃了多少东西?
f
(
6
)
=
8
f(6)=8
f(6)=8
吃完后开始消化,到了24点过去了24-6个小时,六点吃的还剩多少?不就是吃的量与消化后剩下的相乘吗?
那剩下的多少不就是在g上取值吗?
f
(
6
)
g
(
24
−
6
)
f(6)g(24-6)
f(6)g(24−6)
同理,12点吃的东西和18点吃的东西到了24点分别剩下
{
f
(
12
)
g
(
24
−
12
)
f
(
18
)
g
(
24
−
18
)
\begin{cases} f(12)g(24-12) \\ f(18)g(24-18) \end{cases}
{f(12)g(24−12)f(18)g(24−18)
那么到了24点,6点吃的东西会消失吗?不会。
所以每个都加起来,就是
∑
t
=
6
,
12
,
18
f
(
t
)
g
(
24
−
t
)
\sum_{t=6,12,18} f(t)g(24-t)
t=6,12,18∑f(t)g(24−t)
诶诶诶,你看这个形式,是不是跟我们的卷积长得很像啊?
是咯,卷积就是这样。
那么我们来把问题深入一下,我想知道他一整天每个时间段,肚子里有多少东西,怎么办?
简单!
我们把这个公式
∑
t
=
6
,
12
,
18
f
(
t
)
g
(
24
−
t
)
\sum_{t=6,12,18} f(t)g(24-t)
t=6,12,18∑f(t)g(24−t)改一下不就好了吗?
公式里的24不是想要求的时间吗?那么把它改成一个自变量t
不就好了,这个初中生都知道。
咦,那不就有两个 t 了吗?那好吧,我们再改一下,把原来的 t 改成
τ
\tau
τ,初中生都知道,变量名只是一个代称罢了,怎么改都一样。
∑ τ f ( τ ) g ( t − τ ) \sum_{\tau} f(\tau)g(t-\tau) τ∑f(τ)g(t−τ)
不间断吃零食
那么我们再来假设,乙这个人,是个胖子,而且还是个很能吃的胖子,他一天24小时吃东西不间断,注意了,不间断的吃!
那么就是一个连续的函数,根据上面所算的,我们取一个无穷小量
d
τ
d\tau
dτ,经过与上面相似的一系列操作,我们可以发现在t时刻肚子里的东西有这么多:
∫
f
(
τ
)
g
(
t
−
τ
)
d
τ
\int f(\tau)g(t-\tau)d\tau
∫f(τ)g(t−τ)dτ
就这?哈哈哈兄弟们,就这,是不是跟卷积一毛一样?
对,这就是卷积。
因为这个公式比较常用,我们把它用一个符号*
来表示两个函数之间的卷积。
信号中的卷积
根据上面的理解,我们可以很容易的理解信号到底是咋卷积的。
输入的信号就像吃进去的食物,而系统的单位冲激响应就像消化系统的函数。
t=0时输入一个信号值,过一段时间t,他变了,咋变的?随着系统变的。
此时输出的就是
f
(
0
)
g
(
t
−
0
)
f(0)g(t-0)
f(0)g(t−0)
当t=1时,继续输入,第一个输入的值继续变,没有动,而第二个值又出现了,他们只能相加,此时输出的就是
f
(
0
)
g
(
t
−
0
)
+
f
(
1
)
g
(
t
−
1
)
f(0)g(t-0)+f(1)g(t-1)
f(0)g(t−0)+f(1)g(t−1)
同理,一直输入,不断求和,连续输入,不停积分。
仅此而已。
本文仅写了如何理解卷积。如有不懂,可以回复一起讨论一下。