离散 LTI 系统
用冲激响应削去噪声
上方是这个数字滤波器的冲激响应 h[n] = (1−α)αⁿ。放入一个冲激 δ[n],出来的正是这个形状。下方,暗淡的线是带噪输入 x[n](阶跃加噪声),金色的杆是其输出 y[n]。输出是离散卷积:把 h[n] 在输入上滑动、相乘再相加。提高平滑强度 α,把 h[n] 的尾巴拉长,就平均更多邻点,从而削去噪声。但提得太过,阶跃的边缘就会糊掉。
冲激响应即系统的全部
离散 LTI 系统是线性的(输入相加则输出相加)且时不变的(输入延迟,输出延迟相同)。这样的系统由一个冲激响应 h[n] 完全决定:输入冲激 δ[n](n=0 处为 1,其余为 0)时得到的输出就是 h[n]。为什么仅此一项就够?因为任何输入 x[n] 都能拆成多个冲激之和 Σ x[k]·δ[n−k]。由线性与时不变,每个冲激 x[k]δ[n−k] 的输出是 x[k]·h[n−k],把它们全部相加便得到整个输出。
输出是滑动的加权和
那个和 y[n] = Σₖ h[k]·x[n−k] 就是离散卷积。在每个输出时刻 n,把冲激响应 h 沿时间翻转,叠到输入的 n 位置上,把重叠的样本相乘再全部相加。然后移动一格求下一个输出。这就是 B 章的连续卷积,只是把积分 ∫ 换成求和 Σ、把曲线换成样本,原理相同。h[n] 短则只混近邻几点,长则伸入更远的过去。平滑的平均型 h 是削噪的低通,差分型 h 是放大变化的高通。
FIR 与 IIR,以及差分方程
若冲激响应在有限长度后结束,便是 FIR(有限冲激响应)滤波器。长度 M 的移动平均 h[n] = 1/M(n=0..M−1)是典型例子;它只对输入样本加权求和,所以总是稳定。若系统把过去输出反馈进递归式,冲激响应便无限延续,即 IIR(无限冲激响应)。第一屏的滤波器 y[n] = α·y[n−1] + (1−α)·x[n] 就是一例:其冲激响应为 h[n] = (1−α)αⁿ,尾巴永不真正结束。这个递归式就是差分方程,像 E3 那样作 z 变换得 H(z) = (1−α)/(1 − α z⁻¹),极点在 z = α。极点须在单位圆内(α<1),冲激响应才衰减、滤波器才稳定。IIR 用很少的系数产生很长的响应,高效,但若极点离开圆便可能发散。
回到第一屏
上面看到的那一个冲激响应 h[n] = (1−α)αⁿ,就是这个滤波器的全部。提高平滑强度 α、拉长 h[n] 的尾巴,离散卷积便平均更多邻点,削去输出的噪声;提得太过,阶跃的边缘就糊掉。输出始终是 y[n] = Σₖ h[k]x[n−k],即把 h 在输入上滑动的加权和。只要知道对一个冲激的响应,就能把它滑动,造出任意输入的输出。离散 LTI 系统的一切,都装在那个小小的 h[n] 里。
我们看到了在时间上用卷积滤波的结果,但还没用数字看清这个滤波器到底保留哪些频率、抑制哪些频率。下一单元 DTFT 与 DFT 把冲激响应铺展到频率上。把冲激响应在单位圆上 z = ejω 处求值,就是 DTFT,即离散系统的频率响应。平均型 h 的 DTFT 呈低通形状,在高 ω 处变小。而把无限的 DTFT 在有限个频率上采样、使计算机能实际计算的,便是 DFT,其快速算法就是 FFT。卷积在频域里又变回乘法。