欢迎光临
我们一直在努力

控制理论前置知识——卷积

卷积的数学常识

线性时不变系统

想象你有一个线性时不变系统——比如一个音响、一个电路、或者一个弹簧。这个系统有一个非常简单的特性:

  • 线性:如果你给系统一个输入 A,它产生输出 A′;给输入 B,产生输出 B′。那么同时给输入 A+B,输出就是 A′+B′(可叠加)。如果输入变成原来的两倍,输出也变成两倍(齐次性)。
  • 时不变:如果你把输入推迟了 T 秒,那么输出也会推迟同样的 T 秒,形状完全不变。

冲激响应 g(t)

冲激响应 g(t) 描述。
g(t)的含义是:如果在 t=0 时刻给系统一个单位强度的瞬时冲击,那么系统在之后的每个时刻 t(t≥0)的输出就是 g(t)。
也就是说,g(t) 记录的是“从冲击发生的那一刻起,经过时间 t 后,系统还残留的影响有多大”。
注意:在信号与系统、控制论中冲激响应也表示为h(t)

时间符号定义

t:当前时间
τ:在过去的某个时刻
 t−τ:在过去的某个时刻到当前时刻的时间

卷积的物理定义

卷积就是一个“加权滑动叠加”的过程。 对于一个线性时不变系统,如果我们知道了它的“指纹”——也就是冲激响应 g(t)g(t)g(t)(系统对瞬时冲击的反应),那么对于任意输入信号 f(t)f(t)f(t),系统在任意时刻 ttt 的输出就等于:从开始到当前时刻 ttt 为止,把过去每个时刻 τ\\tauτ 的输入值 f(τ)f(\\tau)f(τ) 乘以一个权重,然后全部加起来。而这个权重不是固定的,它取决于当前时刻与过去时刻的时间差 t−τt-\\tautτ,正好由系统的冲激响应 g(t−τ)g(t-\\tau)g(tτ) 给出。

写成数学的理解描述形式就是:
y(t)=∫τ=−∞tf(τ) g(t−τ) dτ
y(t) = \\int_{\\tau = -\\infty}^{t} f(\\tau) \\, g(t – \\tau) \\, d\\tau
y(t)=τ=tf(τ)g(tτ)dτ

(如果输入从 0 开始,积分下限就是 0)
这个积分就是卷积。它就像一个对历史的加权积分,把输入信号的整个历史按照系统的“记忆方式”叠加起来,得到当前的反应。

卷积的数学定义

卷积有两种常见的形式:连续卷积和离散卷积。

连续卷积

对于两个定义在实数域上的函数 f(t)f(t)f(t)g(t)g(t)g(t),它们的卷积定义为:
(f∗g)(t)=∫−∞∞f(τ) g(t−τ) dτ
(f * g)(t) = \\int_{-\\infty}^{\\infty} f(\\tau) \\, g(t – \\tau) \\, d\\tau
(fg)(t)=f(τ)g(tτ)dτ

这里,τ\\tauτ 是积分变量,ttt 是输出时刻。

离散卷积

对于两个离散序列 f[n]f[n]f[n]g[n]g[n]g[n],它们的卷积定义为:
(f∗g)[n]=∑m=−∞∞f[m] g[n−m]
(f * g)[n] = \\sum_{m=-\\infty}^{\\infty} f[m] \\, g[n – m]
(fg)[n]=m=f[m]g[nm]

其中 mmm 是求和指标。

通常,我们考虑的函数或序列只在有限区间内非零,因此积分或求和的上下限会相应截断。

卷积的解释

1. 系统的“指纹”——冲激响应 g(t)g(t)g(t)

我们先做一个实验:给系统一个极短促、极强的冲击(数学上叫“冲激信号”,用 δ(t)\\delta(t)δ(t) 表示)。这个冲击只在 t=0t=0t=0 时刻存在,其他时刻为 0,但它的强度(面积)为 1。

系统会对这个冲击做出一个反应,比如音响会发出“嗒”的一声,电路会产生一个短暂的电压脉冲。这个反应就是系统的冲激响应,记作 g(t)g(t)g(t)。它描述了系统在受到一个瞬时冲击后的行为,就像系统的“指纹”,完全刻画了系统的动态特性。

2. 把任意输入信号 f(t)f(t)f(t) 看作一连串连续冲击

现在,我们给系统一个任意的输入信号 f(t)f(t)f(t)。这个信号可能很复杂,比如一段音乐、一个电压波形。但我们可以用一种巧妙的方式来理解它:

把时间轴切分成无数个极短的小段,每段长度 dτd\\taudτ。在每一个小段里,输入信号的值近似为常数。比如在时刻 τ\\tauτ 附近的一小段,输入的值是 f(τ)f(\\tau)f(τ)

那么,这一小段输入可以近似看作是一个小冲击,它的强度(面积)是 f(τ)⋅dτf(\\tau) \\cdot d\\tauf(τ)dτ。因为这一小段持续了 dτd\\taudτ 这么长时间,幅度是 f(τ)f(\\tau)f(τ),所以总的“冲击量”就是 f(τ)dτf(\\tau) d\\tauf(τ)dτ

也就是说,整个输入信号 f(t)f(t)f(t) 可以被看成是无穷多个、发生在不同时刻 τ\\tauτ 的小冲击的叠加。每个小冲击的强度为 f(τ)dτf(\\tau) d\\tauf(τ)dτ,发生在时刻 τ\\tauτ

3. 每个小冲击都会引起一个响应

现在,由于系统是线性的,每个小冲击都会独立地产生一个响应。而且由于系统是时不变的,如果一个小冲击发生在时刻 τ\\tauτ,那么它产生的响应应该和发生在 0 时刻的冲激响应 g(t)g(t)g(t) 形状一样,但整体向右平移 τ\\tauτ 秒,并且强度要乘以这个小冲击的大小。

  • 发生在 0 时刻、强度为 1 的冲击 →\\to 响应:g(t)g(t)g(t)
  • 发生在 τ\\tauτ 时刻、强度为 f(τ)dτf(\\tau) d\\tauf(τ)dτ 的冲击 →\\to 响应:f(τ)dτ⋅g(t−τ)f(\\tau) d\\tau \\cdot g(t – \\tau)f(τ)dτg(tτ)

注意 g(t−τ)g(t – \\tau)g(tτ) 的意思是:原来在 0 时刻的响应函数 g(t)g(t)g(t),现在被推迟到了 τ\\tauτ 时刻才开始出现,所以自变量变成了 t−τt – \\tautτ(当 t<τt < \\taut<τ 时,g(t−τ)=0g(t-\\tau)=0g(tτ)=0,表示未来发生的冲击不会影响过去)。

4. 在某个观察时刻 ttt,把所有响应叠加起来

现在我们要问:在任意一个固定的时刻 ttt,系统的输出是多少?

在时刻 ttt,系统正在输出的值,是所有发生在 ttt 时刻之前(以及恰好 ttt 时刻)的小冲击,在此时刻留下的贡献的总和。

  • 发生在很早以前 τ=−∞\\tau = -\\inftyτ= 的冲击,如果它的响应足够长,可能还在影响 ttt 时刻。
  • 发生在 τ=t\\tau = tτ=t 的冲击,它的响应刚刚开始(g(0)g(0)g(0) 部分)。
  • 发生在 τ>t\\tau > tτ>t 的冲击(未来)还没有发生,所以贡献为 0。

所以,我们要把从负无穷到 ttt 的所有时刻 τ\\tauτ 的小冲击产生的响应加起来。每个小冲击的贡献是 f(τ)dτ⋅g(t−τ)f(\\tau) d\\tau \\cdot g(t – \\tau)f(τ)dτg(tτ)

求和(积分)就得到:
y(t)=∫τ=−∞tf(τ) g(t−τ) dτ
y(t) = \\int_{\\tau = -\\infty}^{t} f(\\tau) \\, g(t – \\tau) \\, d\\tau
y(t)=τ=tf(τ)g(tτ)dτ

由于通常我们考虑的信号在负无穷处为 0,积分下限可以写成 −∞-\\infty。但如果你愿意,也可以把积分限扩展到整个实数轴,因为当 τ>t\\tau > tτ>t 时,g(t−τ)=0g(t-\\tau)=0g(tτ)=0(因果系统),所以实际上就是上面的式子。写成标准的卷积形式,通常积分限是整个实数轴:
y(t)=∫−∞∞f(τ) g(t−τ) dτ
y(t) = \\int_{-\\infty}^{\\infty} f(\\tau) \\, g(t – \\tau) \\, d\\tau
y(t)=f(τ)g(tτ)dτ

这就是卷积的公式。

5. 为什么叫“卷积”?

这个运算中,我们把 g(τ)g(\\tau)g(τ) 先翻转成 g(−τ)g(-\\tau)g(τ),然后向右滑动 ttt 得到 g(t−τ)g(t – \\tau)g(tτ),再与 f(τ)f(\\tau)f(τ) 相乘后积分。翻转和滑动这两个动作“卷”在一起,所以叫卷积。

6. 一个简单的例子:酒杯中的红酒

再回到那个酒杯的例子。假设你往酒杯里倒酒,倒酒的速度是 f(τ)f(\\tau)f(τ)(比如每秒多少毫升)。每一滴酒倒进去后,不会立刻均匀散开,而是会有一个浓度随时间变化的分布——这可以看作系统的冲激响应 g(t)g(t)g(t)。比如刚倒进去时局部浓度很高,然后慢慢扩散,最后均匀。

那么在某个时刻 ttt,酒杯里某一点的浓度,就是之前所有时刻倒进去的酒,经过扩散后残留到现在的浓度的总和。这正是卷积:

  • 在时刻 τ\\tauτ 倒进去的酒量是 f(τ)dτf(\\tau) d\\tauf(τ)dτ
  • 它扩散到时刻 ttt 的贡献是 f(τ)dτ×g(t−τ)f(\\tau) d\\tau \\times g(t – \\tau)f(τ)dτ×g(tτ)(因为从 τ\\tauτttt 经过了 t−τt-\\tautτ 时间,扩散程度由 ggg 决定),
  • 把所有 τ\\tauτ 的贡献加起来(积分),就得到当前浓度。

总结

卷积是一种将一个函数“涂抹”到另一个函数上的操作,它描述了系统的历史影响如何累积。通过翻转、平移、相乘和累加,卷积将一个函数与另一个函数结合,产生一个新的函数。

卷积的过程拆解:

  • 分解:先把输入信号 f(τ)f(\\tau)f(τ) 想象成一系列连续发生的、强度不同的冲击。每个冲击发生在时刻 τ\\tauτ,大小是 f(τ)f(\\tau)f(τ)

  • 翻转:把系统的冲激响应 g(τ)g(\\tau)g(τ) 在时间轴上翻转,变成 g(−τ)g(-\\tau)g(τ)。这一步是为了让后面的“滑动”能正确地对应时间差。

  • 平移:把翻转后的 g(−τ)g(-\\tau)g(τ) 向右滑动 ttt 个单位,得到 g(t−τ)g(t – \\tau)g(tτ)。这样,当 τ\\tauτ 从过去变化到现在时,g(t−τ)g(t-\\tau)g(tτ) 正好表示“发生在 τ\\tauτ 时刻的冲击对当前 ttt 时刻的影响权重”。

  • 相乘:在每一个过去的时刻 τ\\tauτ,把当时的输入 f(τ)f(\\tau)f(τ) 和对应的权重 g(t−τ)g(t-\\tau)g(tτ) 相乘,得到这个冲击对当前时刻的贡献。

  • 叠加(积分):把所有时刻 τ\\tauτ 的贡献全部加起来(也就是对 τ\\tauτ 积分),就得到了当前时刻 ttt 的总输出。

  • 一个直观的例子:
    假设一个系统的冲激响应 g(t)=e−tg(t) = e^{-t}g(t)=ett≥0t \\ge 0t0),即系统对瞬时冲击的响应是指数衰减的。那么对于任意输入 f(t)f(t)f(t),输出为:
    y(t)=∫0tf(τ)e−(t−τ)dτ
    y(t) = \\int_{0}^{t} f(\\tau) e^{-(t-\\tau)} d\\tau
    y(t)=0tf(τ)e(tτ)dτ

    这正是一个从0到t的积分,其中每个过去的输入 f(τ)f(\\tau)f(τ) 被乘以一个随时间间隔 t−τt-\\tautτ 衰减的权重。

    赞(0)
    未经允许不得转载:171主机测评 » 控制理论前置知识——卷积
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址