第 7 章 多采样率信号处理 / Multirate Signal Processing
7.1 为什么需要多采样率
在实际数字信号处理系统中,不同子系统往往采用不同的采样率(Sampling Rate)。例如:
- 音频系统:语音编码 8 kHz、宽带音频 16 kHz、高保真 48 kHz
- 通信系统:基带处理与中频处理使用不同速率
- 软件定义无线电(SDR):ADC 固定高速采样,后续各通道按需降速
多采样率信号处理(Multirate Signal Processing)研究的就是如何在数字域高效地改变信号的采样率,而不引入失真或混叠。
flowchart LR
A["ADC
高采样率"] --> B["抽取
Decimation"]
B --> C["基带处理
低采样率"]
C --> D["插值
Interpolation"]
D --> E["DAC
高采样率"]
其核心操作只有两个:下采样(Decimation) 和 上采样(Interpolation),以及两者的组合。
7.2 下采样 / Decimation
7.2.1 基本定义
将采样率降低 $M$ 倍($M$ 为正整数),称为 $M$ 倍抽取(Downsampling by $M$):
$$y[n] = x[Mn]$$
即每隔 $M-1$ 个样本丢弃一个,保留第 $0, M, 2M, \ldots$ 个样本。
7.2.2 频谱效应
设 $x[n]$ 的频谱为 $X(e^{j\omega})$,则 $y[n]$ 的频谱为:
$$Y(e^{j\omega}) = \frac{1}{M}\sum_{k=0}^{M-1} X!\left(e^{j(\omega - 2\pi k)/M}\right)$$
这意味着原始频谱被扩展了 $M$ 倍,并以 $2\pi/M$ 为周期出现 $M$ 个副本。若 $x[n]$ 的带宽超过 $\pi/M$,则副本之间发生混叠(Aliasing)。
7.2.3 抗混叠滤波
为避免混叠,抽取前必须先经过一个截止频率为 $\pi/M$ 的低通滤波器 $h[n]$:
$$y[n] = \sum_{k} h[k], x[Mn - k]$$
完整框图:抗混叠滤波器 → $M$ 倍下采样。
flowchart LR
X["x[n]"] --> H["低通滤波器 h[n]
截止频率 π/M"]
H --> D["↓M"]
D --> Y["y[n]"]
7.2.4 伪代码
| |
7.3 上采样 / Interpolation
7.3.1 基本定义
将采样率提高 $L$ 倍($L$ 为正整数),首先进行补零(Zero-stuffing):
$$x_e[n] = \begin{cases} x[n/L], & n = 0, \pm L, \pm 2L, \ldots \ 0, & \text{其他} \end{cases}$$
7.3.2 频谱效应
补零后的频谱为:
$$X_e(e^{j\omega}) = X(e^{j\omega L})$$
原始频谱被压缩了 $L$ 倍,同时在 $[0, 2\pi)$ 区间内出现了 $L$ 个镜像(Image),分别位于 $2\pi k/L$($k = 1, \ldots, L-1$)。
7.3.3 镜像抑制滤波
补零后需通过截止频率为 $\pi/L$ 的低通滤波器以消除镜像:
$$y[n] = \sum_{k} h[k], x_e[n - k]$$
完整框图:$L$ 倍补零 → 镜像抑制滤波器。
flowchart LR
X["x[n]"] --> U["↑L
补零"]
U --> H["低通滤波器 h[n]
截止频率 π/L"]
H --> Y["y[n]"]
7.3.4 伪代码
| |
7.4 采样率转换(有理因子 $L/M$)
当目标采样率与原始采样率之比为有理数 $L/M$ 时,可通过先插值 $L$ 倍、再抽取 $M$ 倍实现。
关键点:中间滤波器只需一个,截止频率取 $\min(\pi/L, \pi/M)$:
$$H_{\text{combined}}: \quad \omega_c = \min!\left(\frac{\pi}{L},, \frac{\pi}{M}\right)$$
flowchart LR
X["x[n]"] --> U["↑L"]
U --> H["组合滤波器
ωc=min(π/L,π/M)"]
H --> D["↓M"]
D --> Y["y[n]"]
工程经验:若 $L$ 和 $M$ 互质,可先抽取后插值以降低中间速率,但需分别设计抗混叠和抗镜像滤波器。实际中通常优先插值再抽取,以确保中间信号无混叠。
7.5 多相分解 / Polyphase Decomposition
7.5.1 滤波器的多相表示
将 $N$ 阶 FIR 滤波器的冲激响应 $h[n]$ 按 $M$ 分组:
$$h[n] = \sum_{k=0}^{M-1} h_k[n], \quad h_k[n] = h[nM + k]$$
对应的 $z$ 变换为:
$$H(z) = \sum_{k=0}^{M-1} z^{-k}, E_k(z^M)$$
其中 $E_k(z) = \sum_n h[nM+k], z^{-n}$ 称为第 $k$ 条多相分支(Polyphase Branch)。
7.5.2 为什么用多相分解?
直接实现抽取时,滤波器在全速率运行,但输出只保留 $1/M$ 的样本——$M-1$ 的计算量被浪费。多相分解将滤波操作移到降速之后,使每条支路的运算量降低 $M$ 倍。
7.5.3 抽取的多相结构
将"滤波 → ↓M"等价变换为:
$$y[n] = \sum_{k=0}^{M-1} \sum_{m} e_k[m], x[(n-m)M - k]$$
即 $M$ 条并行支路,每条支路以 $1/M$ 速率运行 $E_k(z)$,最后求和。
flowchart TD
X["x[n]"] --> D0["延迟 0
E₀(z)"]
X --> D1["延迟 1
E₁(z)"]
X --> D2["延迟 2
E₂(z)"]
X --> DM["延迟 M-1
E_{M-1}(z)"]
D0 --> SUM["∑"]
D1 --> SUM
D2 --> SUM
DM --> SUM
SUM --> Y["y[n]=x[Mn]*h"]
7.5.4 插值的多相结构
对于插值,多相分解的恒等变换为:将"↑L → 滤波"替换为 $L$ 条支路,每条支路 $E_k(z)$ 以输入速率运行,输出经开关轮询选出。
7.5.5 计算量对比
| 结构 | 每输出样本乘法次数 |
|---|---|
| 直接(滤波后抽取) | $N$(其中 $(M-1)/M$ 被丢弃) |
| 多相结构 | $N/M$ |
7.6 半带滤波器 / Half-band Filter
7.6.1 定义
半带滤波器(Half-band Filter)是一种特殊的 FIR 低通滤波器,其通带与阻带关于 $\pi/2$ 对称,满足:
$$H(e^{j\omega}) + H(e^{j(\pi-\omega)}) = 1$$
7.6.2 关键性质
- 冲激响应 $h[n]$ 中,除 $h[0] = 1/2$ 外,约一半系数为零:$h[n] = 0$($n$ 为偶数且 $n \neq 0$)
- 过渡带宽对称分布于 $\pi/2$ 两侧
- 计算量约为同阶普通 FIR 滤波器的 一半
7.6.3 应用场景
半带滤波器特别适合 2 倍抽取/插值($M = L = 2$),因为其截止频率恰好为 $\pi/2$。在多级抽取/插值结构中,大量使用半带滤波器以降低计算复杂度。
| |
7.7 多级实现
当抽取因子 $M$ 很大时(如 $M = 64$),单级实现需要极窄的低通滤波器,阶数非常高。此时可将 $M$ 分解为若干因子之积:
$$M = M_1 \times M_2 \times \cdots \times M_K$$
每一级处理一个较小的因子 $M_i$,滤波器要求逐步放宽。
flowchart LR
X["x[n]
Fs"] --> H1["h₁ + ↓M₁
Fs/M₁"]
H1 --> H2["h₂ + ↓M₂
Fs/(M₁M₂)"]
H2 --> HK["h_K + ↓M_K
Fs/M"]
HK --> Y["y[n]"]
设计原则:$M_1 \geq M_2 \geq \cdots \geq M_K$,前面的级过渡带较宽,滤波器阶数低。
7.8 工程应用
7.8.1 ADC 过采样 + 抽取
现代 $\Sigma\text{-}\Delta$ ADC 的核心策略:
- 以远高于奈奎斯特率的速率采样(过采样,Oversampling)
- 量化噪声被分散到更宽的频带
- 数字域通过抽取滤波器降速到目标采样率,同时抑制带外噪声
等效效果:每过采样 2 倍(OSR 加倍),量化信噪比改善约 3 dB(1 bit 分辨率等效),$\Sigma\text{-}\Delta$ 调制器加噪声整形可进一步提升至约 6 dB/倍频。
flowchart LR
A["模拟输入"] --> SD["Σ-Δ 调制器
1-bit @ Fs=64×Fs_target"]
SD --> CIC["CIC 滤波器
↓8"]
CIC --> HB["半带滤波器
↓2"]
HB --> FIR["FIR 整形
↓4"]
FIR --> OUT["输出
24-bit @ Fs_target"]
CIC 滤波器(Cascaded Integrator-Comb):一种无需乘法器的高效抽取滤波器,常作为多级抽取的第一级。其传递函数为 $H(z) = \left(\frac{1-z^{-RM}}{1-z^{-1}}\right)^N$,其中 $N$ 为级联数,$R$ 为抽取比,$M$ 为差分延迟。
7.8.2 DAC 插值 + 滤波
DAC 侧为镜像的逆过程:
- 数字基带信号以目标速率输入
- 逐级插值提升到高采样率
- 高速 DAC 输出后,模拟重建滤波器只需处理远离信号带的镜像
这极大降低了模拟后滤波器的要求——通常只需简单的一阶 RC。
7.8.3 子带编码 / Subband Coding
将信号通过分析滤波器组(Analysis Filter Bank) 分成多个子带,每个子带独立进行抽取和编码:
- 音频编码(MP3/AAC):利用人耳对不同频率的掩蔽效应,对不可感知的子带分配更少比特
- 图像压缩(JPEG 2000):基于小波分解的子带处理
flowchart TD
X["x[n]"] --> H0["H₀(z)→↓M"]
X --> H1["H₁(z)→↓M"]
X --> HM1["H_{M-1}(z)→↓M"]
H0 --> C0["编码器 0"]
H1 --> C1["编码器 1"]
HM1 --> CM1["编码器 M-1"]
C0 --> TX["传输/存储"]
C1 --> TX
CM1 --> TX
接收端通过综合滤波器组(Synthesis Filter Bank) 将各子带插值重构并叠加,恢复原始信号。当分析与综合滤波器满足完全重构(Perfect Reconstruction) 条件时,重构信号仅差一个常数延迟。
7.9 本章小结
| 操作 | 域变换 | 关键滤波器 | 计算量优化 |
|---|---|---|---|
| $M$ 倍抽取 | 频谱扩展 $M$ 倍 | 抗混叠低通($\omega_c = \pi/M$) | 多相分解 → $N/M$ |
| $L$ 倍插值 | 频谱压缩 $L$ 倍 | 镜像抑制低通($\omega_c = \pi/L$) | 多相分解 → $N/L$ |
| $L/M$ 转换 | 先压后扩 | 组合低通($\omega_c = \min$) | 先插后抽 + 多相 |
| 半带滤波 | — | $\omega_c = \pi/2$,半系数为零 | 计算量减半 |
| 多级实现 | 逐级降速 | 逐级放宽 | 总阶数大幅降低 |
多采样率技术是连接高速 ADC/DAC 与低速数字基带处理的桥梁,也是现代通信、音频、图像处理系统的基石。掌握多相分解与半带滤波器的设计思想,是高效实现多采样率系统的关键。
下一步:第 8 章将讨论有限字长效应(Finite Wordlength Effects)——量化噪声、系数量化、极限环等问题。