为什么输出就是 convolution
上一节只处理了由几个 impulse 组成的输入。这一节把它推广到任意输入:先把输入切成很多细条,每一条近似成一个 impulse,各自的响应相加;细条越来越窄时,求和就变成积分。这个积分就是 convolution integral。
① 第一步:输入是几个 impulse
例 1 三个 impulse
沿用上一节例 1 的系统 。输入是三个 impulse: 处面积 1, 处面积 0.5, 处面积 0.8,即 。求 和 ,并说出 时哪一个 impulse 的贡献最大。
每一块的输出(上一节 ③:先平移再缩放):;;。
linear:相加。
代入数值。 晚于三个 impulse,每一项都是"面积 × (已经过去的时间)",:
| impulse | 过去了多久 | 面积 × h | 贡献 |
|---|---|---|---|
| 2.5 | 0.2052 | ||
| 1.5 | 0.1673 | ||
| 0.5 | 0.2426 |
贡献最大的是 那个,但只比 那个多一点:这个 要过 1 秒才到峰值,刚进来 0.5 秒的 impulse 还没"长大";2.5 秒前那个虽然已经过了峰值,面积却最大。每一项是"面积 × (过去了多久)",两个因子都要看。
② 第二步:任意输入 = 很多细条
现在输入是一条普通的曲线 。把时间轴切成宽 的小段,第 段的位置记作 。这一段里的输入近似是常数 ,所以它是一个高 、宽 的细矩形,面积 。
当 远小于 变化的时间尺度(比如 时 s),系统分辨不出一个窄矩形和一个同面积的 impulse:两者产生的输出几乎一样。所以第 条可以换成面积 、位于 的 impulse。按上一节 ③(平移 ,乘以面积),它产生的输出是
linear:总输出 = 所有细条的输出之和。
这正是一个 Riemann sum。令 ,求和变成对 的积分:
逐个符号看:
- :我们要求输出的那个时刻。积分过程中它是常数;积完以后,结果才是 的函数。
- :dummy variable(哑变量),扫过"输入的每一小块是什么时候进来的",积完就消失。
- : 时刻进来的那一小块输入的面积。
- :那一小块到 时刻已经过了 秒,这是它此刻留下的余波(每单位面积)。
- :读作"convolution",不是乘号。
推导只用了 linear 和 time-invariant,所以这个公式对任何 LTI 系统都成立,和电路的细节无关;它给出的是系统在输入到来之前静止(initial condition 为 0)时的输出。
输出 = 过去每一小块输入留下的余波之和。正因为它是"把很多响应叠加起来",Alexander 也把它叫 superposition integral(叠加积分)。
③ 例:Riemann sum 怎样变成积分
例 2 用细条近似算 y(2)
,(同例 1)。求 :(a) 用宽 的细条近似;(b) 用 ;(c) 用积分精确计算。
先看哪些 有贡献。。 只在 时为 1; 只在 ,即 时不为 0。所以只有 有贡献,被积函数是 。
(a) 。4 条,中点 ,过去的时间 。高度 依次是 0.3041、0.3581、0.3543、0.1947,和 1.2112,乘宽度 0.5:
(b) 。8 条,中点 0.125, 0.375, …, 1.875,同样算出 。
(c) 积分。换元 ("那一小块进来以后过了多久"):, 从 0 到 2 对应 从 2 到 0,负号正好把上下限翻回来:
分部积分( 求导, 积分):。所以
条越窄,近似值(0.6056 → 0.5969)越接近积分值 0.5940。上面这个 的式子C·03例 2 还会用。
- 积分对 积, 在积分里是常数。
- 被积函数里是 ,不是 ,也不是 。
- 不是乘法:C·04例 1 会看到 ,而 。
- 公式要求系统是 LTI,并且在输入到来之前是静止的。