第 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 伪代码

1
2
3
4
5
function decimate(x, M, h):
    // x: 输入信号, M: 抽取因子, h: 抗混叠 FIR 滤波器系数
    filtered = convolve(x, h)          // 低通滤波
    y = filtered[::M]                  // 保留第 0, M, 2M, ... 个样本
    return y

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 伪代码

1
2
3
4
5
6
function interpolate(x, L, h):
    N = len(x)
    x_e = zeros(N * L)        // 补零扩展
    x_e[::L] = x
    y = convolve(x_e, h)       // 低通滤波消除镜像
    return y

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$。在多级抽取/插值结构中,大量使用半带滤波器以降低计算复杂度。

1
2
3
// 半带滤波器系数特征示例 (N=7)
h = [0, -1/16, 0, 1/2, 0, -1/16, 0]
//        ↑ 偶数位=0   ↑ 中心=1/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 的核心策略:

  1. 以远高于奈奎斯特率的速率采样(过采样,Oversampling)
  2. 量化噪声被分散到更宽的频带
  3. 数字域通过抽取滤波器降速到目标采样率,同时抑制带外噪声

等效效果:每过采样 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 侧为镜像的逆过程:

  1. 数字基带信号以目标速率输入
  2. 逐级插值提升到高采样率
  3. 高速 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)——量化噪声、系数量化、极限环等问题。