第 10 章:采样定理 / The Sampling Theorem

10.1 从连续到离散的跨越

在前面的章节中,我们建立了连续时间信号(CTFT)和离散时间信号(DFT、Z 变换)各自的频域分析框架。然而,一个根本性的问题始终悬而未决:

连续信号如何变成离散序列,又不丢失任何信息?

这就是**采样(Sampling)**要回答的核心问题。我们每天都会遇到它:手机将声波变成数字音频,相机将光信号变成像素,软件无线电将射频信号变成基带数据。采样是连接模拟世界与数字世界的桥梁。

这座桥梁能稳固成立,依赖于一个堪称优美的数学结论——奈奎斯特-香农采样定理(Nyquist-Shannon Sampling Theorem)

graph LR
    A["连续信号 x(t)"] -->|"采样 f_s"| B["离散序列 x[n]"]
    B -->|"数字处理
DFT/滤波/压缩"| C["处理后 y[n]"] C -->|"重建"| D["连续信号 y(t)"] style A fill:#1a1a2e,color:#fff style B fill:#0f3460,color:#fff style C fill:#0f3460,color:#fff style D fill:#1a1a2e,color:#fff

本章路线图:从理想采样模型出发 → 频域分析采样过程 → 推导采样定理 → 理解混叠现象 → 重建原信号 → 工程实践中的采样。

10.2 理想采样

10.2.1 冲激采样模型

设连续信号 $x(t)$,以采样周期 $T_s$ 进行理想采样。采样信号是周期为 $T_s$ 的冲激串:

$$p(t) = \sum_{n=-\infty}^{\infty} \delta(t - nT_s)$$

采样后的信号为:

$$x_s(t) = x(t) \cdot p(t) = \sum_{n=-\infty}^{\infty} x(nT_s) , \delta(t - nT_s)$$

每个冲激的"强度"等于 $x(t)$ 在采样时刻的值 $x(nT_s)$。定义离散序列:

$$x[n] = x(nT_s)$$

采样率 $f_s = 1/T_s$,角频率 $\Omega_s = 2\pi f_s = 2\pi / T_s$。

10.2.2 采样的频域效应

这是本章最关键的一步。 对 $x_s(t)$ 取 CTFT,推导采样信号与原始信号频谱的关系。

利用冲激串的 CTFT:

$$P(j\Omega) = \Omega_s \sum_{k=-\infty}^{\infty} \delta(\Omega - k\Omega_s)$$

时域乘积对应频域卷积:

$$X_s(j\Omega) = \frac{1}{2\pi} X(j\Omega) * P(j\Omega) = \frac{1}{T_s} \sum_{k=-\infty}^{\infty} X(j(\Omega - k\Omega_s))$$

结果解读:采样信号的频谱是原始频谱以 $\Omega_s$ 为周期的无限复制,每个副本的幅度缩放了 $1/T_s$。

graph TB
    subgraph "采样前"
        A1["X(jΩ):原始频谱
带宽 |Ω| < Ω_max"] end subgraph "采样后 X_s(jΩ)" B1["X(jΩ)/T_s
(基带)"] B2["X(j(Ω-Ω_s))/T_s
(第一副本)"] B3["X(j(Ω+Ω_s))/T_s
(第一副本)"] B4["..."] end A1 --> B1 A1 --> B2 A1 --> B3 A1 --> B4 style A1 fill:#16213e,color:#fff style B1 fill:#0f3460,color:#fff style B2 fill:#0f3460,color:#fff style B3 fill:#0f3460,color:#fff

10.3 奈奎斯特-香农采样定理

10.3.1 定理表述

采样定理(Nyquist-Shannon Sampling Theorem)

设 $x(t)$ 是带限信号,即其频谱满足: $$X(j\Omega) = 0, \quad |\Omega| > \Omega_{\max}$$

当且仅当采样率满足: $$\Omega_s > 2\Omega_{\max} \quad \text{或等价地} \quad f_s > 2f_{\max}$$

时,$x(t)$ 可由其采样值 $x(nT_s)$ 完全重建。

关键术语:

  • 奈奎斯特率(Nyquist Rate):$f_{\text{Nyquist}} = 2f_{\max}$,完全重建所需的最低采样率
  • 奈奎斯特频率(Nyquist Frequency):$f_s/2$,给定采样率下能表示的最高频率
  • 过采样(Oversampling):$f_s > 2f_{\max}$
  • 欠采样(Undersampling):$f_s < 2f_{\max}$,将导致混叠

10.3.2 直觉理解

为什么恰好是 2 倍?

想象一个频率为 $f$ 的正弦波。如果你每秒采样 $2f$ 次(即每个周期采 2 个点),你恰好能捕捉到每个周期"上一、下一"两个极值。虽然看起来信息量很少,但正弦波只有两个自由度(幅度和相位),两个采样点刚好确定它们。

如果采样率低于 $2f$,某些不同的正弦波会在采样点上给出相同的值——你无法区分它们。这就是混叠的本质。

10.3.3 历史注记

采样定理的思想可以追溯到 Harry Nyquist(1928 年),他证明了传输信号所需的带宽下限。Claude Shannon(1949 年)在《Communication in the Presence of Noise》中给出了完整的数学证明,并将其确立为信息论的基石。

鲜为人知的是,E. T. Whittaker(1915 年)和 V. A. Kotelnikov(1933 年)分别独立地发现了类似结果。在数学文献中,它常被称为 Whittaker-Shannon 插值公式

10.4 混叠(Aliasing)

10.4.1 什么是混叠?

当 $f_s < 2f_{\max}$ 时,采样信号频谱中相邻的副本会发生重叠。重叠区域的频率分量无法区分——一个高频分量"伪装"成低频分量出现,这就是混叠(Aliasing)

数学上,混叠意味着:

$$X_s(j\Omega) \neq \frac{1}{T_s} X(j\Omega), \quad \text{在某些 } \Omega \text{ 上}$$

在重叠区域,多个频谱副本叠加在一起,原始信息被不可逆地破坏。

10.4.2 混叠的视觉比喻

一个经典演示:在电影中观察旋转的车轮。当车轮转速越来越快时,它看起来反而像在倒转。这是因为相机的帧率(采样率)跟不上车轮的旋转频率,高频运动被混叠成了低频的"反转"。

10.4.3 混叠的数学描述

设信号包含频率 $f_0 > f_s/2$ 的分量。采样后,它出现在混叠频率:

$$f_a = |f_0 - k f_s|, \quad k \text{ 为使 } 0 \leq f_a < f_s/2 \text{ 的整数}$$

:采样率 $f_s = 1000$ Hz,信号频率 $f_0 = 1200$ Hz。奈奎斯特频率为 $500$ Hz。

$$f_a = |1200 - 1 \times 1000| = 200 \text{ Hz}$$

1200 Hz 的信号在采样后看起来像 200 Hz 的信号,两者无法区分。

10.4.4 抗混叠滤波器(Anti-Aliasing Filter)

为防止混叠,在 ADC 之前必须加入抗混叠滤波器(Anti-Aliasing Filter)——一个模拟低通滤波器,截止频率设为 $f_s/2$,将高于奈奎斯特频率的分量衰减到可忽略的水平。

flowchart LR
    A["x(t)
模拟信号"] --> B["抗混叠
低通滤波"] B --> C["采样
f_s"] C --> D["量化"] D --> E["x[n]
数字序列"] style A fill:#1a1a2e,color:#fff style B fill:#e94560,color:#fff style C fill:#0f3460,color:#fff style D fill:#0f3460,color:#fff style E fill:#0f3460,color:#fff

抗混叠滤波器的性能直接影响采样系统的质量。理想滤波器(砖墙滤波器)在物理上不可实现,实际滤波器存在过渡带,因此工程中通常采用过采样(例如 $f_s = 2.5 \sim 4 \times f_{\max}$),为滤波器留出足够的过渡带宽度。

10.5 信号重建(Reconstruction)

10.5.1 理想重建:Whittaker-Shannon 插值

当满足采样定理条件时,原始信号可由采样值完美重建:

$$x(t) = \sum_{n=-\infty}^{\infty} x(nT_s) \cdot \operatorname{sinc}!\left(\frac{t - nT_s}{T_s}\right)$$

其中 $\operatorname{sinc}(u) = \frac{\sin(\pi u)}{\pi u}$。

直觉理解:每个采样点 $x(nT_s)$ 贡献一个以该点为中心的 sinc 函数。sinc 函数在所有其他整数采样点上为零,因此各采样点的贡献互不干扰。无穷多个 sinc 的叠加完美恢复原信号。

10.5.2 频域视角的重建

重建等价于用理想低通滤波器从 $X_s(j\Omega)$ 中提取基带副本:

$$H_r(j\Omega) = \begin{cases} T_s, & |\Omega| \leq \Omega_s/2 \ 0, & \text{otherwise} \end{cases}$$

$$X(j\Omega) = X_s(j\Omega) \cdot H_r(j\Omega)$$

时域中理想低通滤波器的冲激响应恰好就是 $\operatorname{sinc}(t/T_s)$,与插值公式一致。

10.5.3 实际重建方法

理想 sinc 插值需要无穷多个样本,物理上不可实现。实际系统中采用近似方法:

方法原理特点
零阶保持(ZOH)每个采样值保持到下一个采样时刻DAC 的自然行为,引入 $(\operatorname{sinc}(\pi f T_s))$ 失真
一阶保持(FOH)线性插值连接相邻采样点比 ZOH 平滑,仍有高频失真
过采样 + 数字滤波先数字插值升采样,再 DAC高精度重建,现代标准方案
样条插值三次样条等光滑插值平衡精度与复杂度

10.5.4 DAC 后滤波

DAC 输出经 ZOH 后仍含高频镜像分量,需加重建滤波器(Reconstruction Filter)——一个模拟低通滤波器,与抗混叠滤波器的作用对称。

10.6 采样与 DTFT 的关系

10.6.1 从 CTFT 到 DTFT

将连续信号的采样 $x[n] = x(nT_s)$ 代入 DTFT 定义:

$$X(e^{j\omega}) = \sum_{n=-\infty}^{\infty} x[n] e^{-j\omega n} = \sum_{n=-\infty}^{\infty} x(nT_s) e^{-j\omega n}$$

与 $X_s(j\Omega)$ 的关系:

$$X(e^{j\omega}) = \frac{1}{T_s} X!\left(j\frac{\omega}{T_s}\right), \quad \omega = \Omega T_s$$

DTFT 的数字频率 $\omega$ 是模拟频率 $\Omega$ 的归一化:$\omega = \Omega T_s = \Omega / f_s$。

关键对应关系

模拟频率数字频率说明
$\Omega = 0$$\omega = 0$直流
$\Omega = \Omega_s/2$$\omega = \pi$奈奎斯特频率
$\Omega = \Omega_s$$\omega = 2\pi$采样率

10.6.2 归一化的意义

DTFT 中 $\omega$ 的周期为 $2\pi$,对应物理频率范围 $[0, f_s)$。这种归一化使得离散系统分析可以脱离具体的采样率——一个数字滤波器的设计在 $\omega$ 域完成,然后乘以 $f_s$ 就映射到实际物理频率。

10.7 带通采样(Bandpass Sampling)

10.7.1 核心思想

采样定理要求 $f_s > 2f_{\max}$,这对基带信号(频谱从 0 开始)是最低要求。但很多通信信号的频谱集中在某个高频载波附近,低频处几乎没有能量。

带通采样定理指出:如果信号的带宽为 $B = f_H - f_L$,那么采样率只需满足:

$$f_s \geq 2B$$

并且要选择合适的 $f_s$ 使得混叠副本不与原频谱重叠。具体条件为:

$$\frac{2f_H}{n} \leq f_s \leq \frac{2f_L}{n-1}$$

其中 $n$ 为满足 $1 \leq n \leq \lfloor f_H / B \rfloor$ 的整数。

10.7.2 工程应用

带通采样在**软件定义无线电(SDR)**中广泛应用。例如,一个 2.4 GHz 的 Wi-Fi 信号带宽仅 20 MHz,理论上只需 $f_s \geq 40$ MHz 即可采样——远低于 $2 \times 2.4 = 4.8$ GHz。

实际上,SDR 通常先用模拟混频将射频信号搬移到中频,再进行带通采样或基带采样。

10.8 多采样率信号处理

10.8.1 下采样(Decimation)

下采样将采样率降低 $M$ 倍:

$$y[n] = x[Mn]$$

但直接丢弃样本会导致混叠!正确流程是先低通滤波(截止 $f_s/(2M)$),再抽取:

1
x[n] → [低通滤波 h[n]] → [↓M 抽取] → y[n]

滤波器的截止频率必须满足 $\omega_c = \pi/M$ 以消除混叠。

10.8.2 上采样(Interpolation/Upsampling)

上采样将采样率提高 $L$ 倍,在样本之间插入 $L-1$ 个零:

$$y[n] = \begin{cases} x[n/L], & n = 0, \pm L, \pm 2L, \ldots \ 0, & \text{otherwise} \end{cases}$$

零插入后频谱出现镜像副本,需用低通滤波器(截止 $\pi/L$)去除:

1
x[n] → [↑L 插零] → [低通滤波 h[n]] → y[n]

10.8.3 分数倍采样率转换

将采样率改变 $L/M$ 倍(非整数),先上采样 $L$ 倍,再下采样 $M$ 倍。中间的低通滤波器截止取 $\pi / \max(L, M)$,可合并为一个滤波器:

1
x[n] → [↑L] → [低通滤波] → [↓M] → y[n]

这是音频重采样(如 44.1 kHz → 48 kHz)的标准方法。

10.9 量化与 ADC/DAC

10.9.1 量化的引入

采样解决"何时取值"的问题,量化解决"取什么值"的问题。连续幅度的采样值必须映射到有限个离散电平——这是模数转换的第二步。

均匀量化:将幅度范围 $[-A, A]$ 等分为 $2^B$ 个电平($B$ 为位数),量化间隔 $\Delta = 2A / 2^B$。

10.9.2 量化噪声

量化引入的误差可建模为均匀分布的噪声:

$$e[n] = x_q[n] - x[n], \quad e \sim \mathcal{U}(-\Delta/2, \Delta/2)$$

量化噪声功率:

$$\sigma_e^2 = \frac{\Delta^2}{12} = \frac{A^2}{3 \cdot 2^{2B}}$$

信噪比(SQNR):

$$\text{SQNR} \approx 6.02B + 1.76 \text{ dB}$$

经验法则:每增加 1 位,量化信噪比提高约 6 dB。

位数量化电平数SQNR
8256~49.9 dB
124096~74.0 dB
1665536~98.1 dB
2416777216~146.2 dB

10.9.3 过采样与噪声成形

过采样(采样率远高于奈奎斯特率)可以将量化噪声分散到更宽的频带,然后通过数字低通滤波器去除带外噪声,从而提高有效精度。

Σ-Δ 调制(Sigma-Delta Modulation) 利用噪声成形技术,将量化噪声推向高频,在低频段获得极高的有效精度。1 位 Σ-Δ ADC 过采样 64 倍即可实现 16 位以上的有效精度——这是音频 ADC 的主流技术。

10.10 Python 验证示例

10.10.1 采样与混叠演示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import matplotlib.pyplot as plt

# 原始信号:5 Hz 正弦波
f0 = 5          # 信号频率 5 Hz
T = 1           # 观察 1 秒
t_cont = np.linspace(0, T, 1000)
x_cont = np.sin(2 * np.pi * f0 * t_cont)

# 情况 1:充分采样 (f_s = 50 Hz > 2×5)
fs1 = 50
n1 = np.arange(T * fs1)
x_samp1 = np.sin(2 * np.pi * f0 * n1 / fs1)

# 情况 2:临界采样 (f_s = 10 Hz = 2×5)
fs2 = 10
n2 = np.arange(T * fs2)
x_samp2 = np.sin(2 * np.pi * f0 * n2 / fs2)

# 情况 3:欠采样导致混叠 (f_s = 7 Hz < 2×5)
fs3 = 7
n3 = np.arange(T * fs3)
x_samp3 = np.sin(2 * np.pi * f0 * n3 / fs3)

# 混叠频率
f_alias = abs(f0 - fs3)  # |5 - 7| = 2 Hz
x_alias = np.sin(2 * np.pi * f_alias * t_cont)

print(f"原始频率: {f0} Hz")
print(f"奈奎斯特率: {2*f0} Hz")
print(f"欠采样率: {fs3} Hz → 混叠频率: {f_alias} Hz")

10.10.2 Sinc 插值重建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def sinc_interp(x_samp, fs, t_out):
    """Whittaker-Shannon 插值重建"""
    T_s = 1.0 / fs
    n = np.arange(len(x_samp))
    # 外层求和:对所有采样点
    reconstructed = np.zeros_like(t_out)
    for i in range(len(n)):
        reconstructed += x_samp[i] * np.sinc((t_out - n[i] * T_s) / T_s)
    return reconstructed

# 从 50 Hz 采样重建
t_recon = np.linspace(0, T, 1000)
x_recon = sinc_interp(x_samp1, fs1, t_recon)

# 计算重建误差
error = np.max(np.abs(x_recon - x_cont))
print(f"最大重建误差: {error:.2e}")

10.10.3 量化与 SQNR

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def quantize(x, bits):
    """均匀量化"""
    levels = 2 ** bits
    x_max = np.max(np.abs(x))
    x_norm = x / x_max  # 归一化到 [-1, 1]
    x_q = np.round((x_norm + 1) / 2 * (levels - 1)) / (levels - 1) * 2 - 1
    return x_q * x_max

# 量化并计算 SQNR
x = np.random.randn(10000)  # 高斯信号
for bits in [8, 12, 16]:
    x_q = quantize(x, bits)
    noise = x_q - x
    sqnr = 10 * np.log10(np.var(x) / np.var(noise))
    print(f"{bits} 位量化: SQNR = {sqnr:.1f} dB (理论值 ≈ {6.02*bits+1.76:.1f} dB)")

10.11 本章小结

概念要点
采样定理$f_s > 2f_{\max}$,带限信号可完美重建
频域效应采样 = 频谱以 $\Omega_s$ 为周期复制
混叠$f_s < 2f_{\max}$ 时频谱副本重叠,信息不可逆丢失
抗混叠滤波ADC 前必须加模拟低通,截止 $f_s/2$
理想重建sinc 插值 = 理想低通滤波提取基带
带通采样$f_s \geq 2B$,适用于窄带高频信号
多采样率下采样先滤波再抽取,上采样先插零再滤波
量化SQNR ≈ $6.02B + 1.76$ dB,每增加 1 位提升 ~6 dB
Σ-Δ ADC过采样 + 噪声成形,以速度换精度

采样定理是数字信号处理的根基。没有它,我们无法将模拟世界的声音、图像、电磁波安全地送入数字世界。理解采样定理——不仅是记住 “$f_s > 2f_{\max}$",更要理解频谱复制、混叠机制和重建原理——是每一个 DSP 工程师的基本功。

下一章将介绍数字滤波器设计,将采样后的离散序列作为输入,在频域实现我们期望的频率选择性。