第 3 章 离散时间信号 / Discrete-Time Signals
3.1 为什么要研究离散时间信号?
现实世界中,语音、温度、电压这些物理量都是连续变化的——它们是连续时间信号 (Continuous-Time Signals)。然而,当今几乎所有的信号处理都在数字设备上完成:手机里的语音编码、雷达里的目标检测、医学影像的重建,无一不是在对离散序列进行运算。
一个自然的问题由此产生:我们如何从连续世界中"取出"一串离散的数,又如何保证这串数能忠实代表原始信号?
这就是离散时间信号 (Discrete-Time Signals) 的研究起点。本章将从定义出发,逐步建立离散信号的基本概念体系,为后续的离散时间傅里叶变换 (DTFT) 和数字滤波器设计奠定基础。
3.2 离散时间信号的定义
离散时间信号是一个序列 (Sequence),记作 $x[n]$,其中自变量 $n$ 仅取整数值:
$$x[n], \quad n \in \mathbb{Z}$$
每个 $x[n]$ 称为一个样本 (Sample)。与连续信号 $x(t)$ 不同,$x[n]$ 在非整数 $n$ 处没有定义——不是等于零,而是根本不存在。
关键区分:离散时间信号 ≠ 数字信号 (Digital Signal)。离散时间信号只要求自变量离散,幅度可以取任意实数值;数字信号则进一步要求幅度也被量化 (Quantized) 为有限个离散电平。
3.2.1 采样——从连续到离散的桥梁
设连续信号为 $x_c(t)$,以等间隔 $T_s$ 对其进行采样 (Sampling),得到的离散序列为:
$$x[n] = x_c(nT_s)$$
其中 $T_s$ 称为采样周期 (Sampling Period),其倒数 $f_s = 1/T_s$ 称为采样率 (Sampling Rate) 或采样频率 (Sampling Frequency)。
graph LR
A["连续信号 x(t)"] -->|"采样 (T_s)"| B["离散序列 x[n]"]
B -->|"量化"| C["数字信号"]
style A fill:#1565C0,color:#fff
style B fill:#228B22,color:#fff
style C fill:#5E35B1,color:#fff
采样的核心问题是:采样率选多高才不会丢失信息? 这将由第 5 章的奈奎斯特采样定理 (Nyquist Sampling Theorem) 给出严格回答。此处先给出工程直觉:采样率越高,离散序列越接近原始连续信号,但数据量也随之增大。
3.2.2 数学背景:序列与级数
离散时间信号的理论基础是序列与级数 (Sequences and Series)。在高等数学中,级数的收敛性是一个核心课题;在信号处理中,我们更关注的是序列的运算性质和变换方法。
验证工具提示:Python 的 numpy 库天然适合处理离散序列——一个序列就是一个数组 (Array),几乎所有序列运算都可用数组操作实现。
3.3 基本序列 / Elementary Sequences
正如连续信号中有单位冲激 $\delta(t)$ 和单位阶跃 $u(t)$,离散时间信号也有对应的基本序列 (Elementary Sequences)。它们是构建复杂信号的"积木",也是理解系统响应的基础。
3.3.1 单位样本序列 / Unit Sample Sequence
$$\delta[n] = \begin{cases} 1, & n = 0 \ 0, & n \neq 0 \end{cases}$$
单位样本序列 $\delta[n]$ 又称为克罗内克 delta (Kronecker Delta)。它在 $n=0$ 处取值为 1,其余位置为零。
与连续冲激 $\delta(t)$ 相比,$\delta[n]$ 不需要引入广义函数——它的定义简单而明确,没有任何数学上的奇异性。
重要性质——筛选性 (Sifting Property):
$$\sum_{n=-\infty}^{\infty} x[n] \delta[n - n_0] = x[n_0]$$
这意味着任意序列都可以用 $\delta[n]$ 的加权时移之和来表示:
$$x[n] = \sum_{k=-\infty}^{\infty} x[k] \delta[n-k]$$
3.3.2 单位阶跃序列 / Unit Step Sequence
$$u[n] = \begin{cases} 1, & n \geq 0 \ 0, & n < 0 \end{cases}$$
$\delta[n]$ 与 $u[n]$ 的关系:
$$u[n] = \sum_{k=0}^{\infty} \delta[n-k] = \sum_{k=-\infty}^{n} \delta[k]$$
$$\delta[n] = u[n] - u[n-1]$$
即单位阶跃是单位样本的累积和,而单位样本是单位阶跃的一阶差分。
3.3.3 实指数序列 / Real Exponential Sequence
$$x[n] = a^n, \quad a \in \mathbb{R}$$
其行为取决于 $|a|$ 与 1 的关系:
| $|a|$ 的范围 | $a > 0$ | $a < 0$ | |:—:|:—:|:—:| | $|a| < 1$ | 单调衰减 | 交替衰减 | | $|a| = 1$ | 恒为 1 | 交替取 ±1 | | $|a| > 1$ | 单调增长 | 交替增长 |
工程中,$|a| < 1$ 的衰减指数最为常见,例如一阶数字滤波器的脉冲响应。
3.3.4 复指数序列 / Complex Exponential Sequence
$$x[n] = e^{j\omega_0 n}, \quad j = \sqrt{-1}$$
由欧拉公式 (Euler’s Formula),可将其分解为实部和虚部:
$$e^{j\omega_0 n} = \cos(\omega_0 n) + j\sin(\omega_0 n)$$
此处 $\omega_0$ 称为数字角频率 (Digital Angular Frequency),单位为弧度/样本 (rad/sample)。需要注意它与连续角频率 $\Omega$(单位 rad/s)的区别——$\omega_0 = \Omega T_s$。
数学背景:复指数是线性时不变系统 (LTI System) 的特征函数 (Eigenfunction),即 LTI 系统对复指数输入的响应仍是同频率的复指数,仅幅度和相位发生变化。这一性质是整个频域分析的基石。
3.3.5 正弦序列 / Sinusoidal Sequence
$$x[n] = A\cos(\omega_0 n + \phi)$$
正弦序列可由复指数序列的实部直接得到。与连续正弦信号相比,离散正弦序列有一个极其重要的区别——离散正弦序列不一定是周期的(详见 3.5 节)。
3.4 序列运算 / Operations on Sequences
3.4.1 时间平移 / Time Shifting
$$y[n] = x[n - n_0]$$
- $n_0 > 0$:序列向右平移(延迟 / Delay)
- $n_0 < 0$:序列向左平移(超前 / Advance)
在数字系统中,延迟操作对应于移位寄存器 (Shift Register)——这在 FIR 滤波器中随处可见。
3.4.2 时间反转 / Time Reversal
$$y[n] = x[-n]$$
将序列关于 $n=0$ 进行镜像翻转。在信号处理中,相关 (Correlation) 运算和匹配滤波 (Matched Filtering) 都涉及时间反转。
3.4.3 下采样 / Decimation (Downsampling)
$$y[n] = x[Mn], \quad M \in \mathbb{Z}^+$$
每隔 $M-1$ 个样本保留一个,丢弃其余。$M$ 称为抽取因子 (Decimation Factor)。下采样会改变信号的频谱结构,可能导致混叠 (Aliasing),通常需先经抗混叠滤波器 (Anti-Aliasing Filter)。
3.4.4 上采样 / Upsampling (Zero-Interpolation)
$$y[n] = \begin{cases} x[n/L], & n = 0, \pm L, \pm 2L, \ldots \ 0, & \text{其他} \end{cases}$$
在相邻样本之间插入 $L-1$ 个零。上采样本身引入了频谱镜像 (Spectral Images),通常后续紧跟一个低通滤波器来"填满"零值位置——这称为插值 (Interpolation)。
3.4.5 基本算术运算
- 相加:$y[n] = x_1[n] + x_2[n]$(逐样本相加)
- 相乘:$y[n] = x_1[n] \cdot x_2[n]$(逐样本相乘,又称调制 / Modulation)
- 缩放:$y[n] = a \cdot x[n]$(幅度缩放)
伪代码示例——序列相加与时间反转:
| |
伪代码示例——下采样与上采样:
| |
3.5 周期性分析 / Periodicity of Discrete Signals
3.5.1 周期序列的定义
若存在正整数 $N$,使得对所有 $n$ 都有:
$$x[n] = x[n + N]$$
则称 $x[n]$ 为周期序列 (Periodic Sequence),满足上式的最小 $N$ 称为基本周期 (Fundamental Period)。
3.5.2 离散正弦序列的周期性——一个关键陷阱
连续时间中,$x(t) = \cos(\Omega_0 t)$ 对任意 $\Omega_0 \neq 0$ 都是周期的,周期为 $T = 2\pi/\Omega_0$。
然而,在离散时间中,$x[n] = \cos(\omega_0 n)$ 仅当 $\omega_0 / (2\pi)$ 为有理数时才是周期的。
推导过程:若 $\cos(\omega_0 n)$ 为周期的,则存在整数 $N > 0$ 使得:
$$\omega_0 N = 2\pi k, \quad k \in \mathbb{Z}$$
因此:
$$\frac{\omega_0}{2\pi} = \frac{k}{N}$$
即 $\omega_0 / (2\pi)$ 必须是有理数。若该比值化为最简分数 $k/N$,则基本周期为 $N$。
举例:
| 序列 | $\omega_0 / (2\pi)$ | 有理数? | 周期? | 基本周期 |
|---|---|---|---|---|
| $\cos(2\pi n / 10)$ | $1/10$ | ✓ | ✓ | $N = 10$ |
| $\cos(0.1n)$ | $0.1/(2\pi)$ | ✗ | ✗ | — |
| $\cos(3\pi n / 7)$ | $3/14$ | ✓ | ✓ | $N = 14$ |
工程启示:在数字系统中,频率不是任意的——它受限于采样率的离散化效应。这也解释了为什么数字振荡器 (Numerically Controlled Oscillator, NCO) 只能产生特定的离散频率点。
3.5.3 复指数序列的周期性
同理,$e^{j\omega_0 n}$ 的周期性条件与正弦序列相同:$\omega_0 / (2\pi) = k/N$(有理数)。
一个额外的关键性质:复指数序列 $e^{j\omega_0 n}$ 关于 $\omega_0$ 具有周期性,周期为 $2\pi$:
$$e^{j(\omega_0 + 2\pi)n} = e^{j\omega_0 n} \cdot e^{j2\pi n} = e^{j\omega_0 n}$$
这意味着数字频率 $\omega_0$ 只需在 $[0, 2\pi)$ 或 $[-\pi, \pi)$ 范围内讨论,与连续频率 $\Omega$ 可以取遍 $(-\infty, +\infty)$ 形成鲜明对比。
3.6 能量与功率 / Energy and Power
3.6.1 序列的能量
离散序列 $x[n]$ 的能量 (Energy) 定义为:
$$E = \sum_{n=-\infty}^{\infty} |x[n]|^2$$
数学背景:这是无穷级数的求和问题。当序列绝对可和时,该级数收敛于有限值。能量有限的信号称为能量信号 (Energy Signal),典型的例子是有限长序列和衰减指数序列。
3.6.2 序列的平均功率
$$P = \lim_{N \to \infty} \frac{1}{2N+1} \sum_{n=-N}^{N} |x[n]|^2$$
功率有限但能量无限的信号称为功率信号 (Power Signal)。周期信号是典型的功率信号。
能量与功率的关系:若 $E < \infty$,则 $P = 0$;若 $P > 0$,则 $E = \infty$。一个信号可以既不是能量信号也不是功率信号(例如 $x[n] = n$)。
伪代码——计算有限长序列的能量:
| |
验证工具:
numpy中,E = np.sum(np.abs(x)**2)即可计算序列能量。
3.7 信号的向量视角 / Signals as Vectors
3.7.1 序列即向量
一个长度为 $N$ 的有限序列可以自然地表示为 $\mathbb{C}^N$ 中的一个向量:
$$\mathbf{x} = [x[0], x[1], \ldots, x[N-1]]^T$$
即使是无限长序列,也可以视为一个无穷维向量 (Infinite-Dimensional Vector)。这一视角的好处在于,我们可以将线性代数中的内积、正交性、投影等概念直接移植到信号空间。
3.7.2 内积与正交性
两个序列 $x[n]$ 和 $y[n]$ 的内积 (Inner Product) 定义为:
$$\langle x, y \rangle = \sum_{n=-\infty}^{\infty} x[n] y^*[n]$$
其中 $y^*[n]$ 表示 $y[n]$ 的复共轭 (Complex Conjugate)。
若 $\langle x, y \rangle = 0$,则称 $x[n]$ 与 $y[n]$ 正交 (Orthogonal)。
为什么要引入正交性? 因为离散傅里叶变换 (DFT) 的本质,就是将序列投影到一组正交的复指数基函数上。正交性保证了各频率分量之间不互相干扰,使得频域分析成为可能。这一概念将在第 6 章中详细展开。
3.7.3 为傅里叶分析铺路
利用 3.3.1 节中的筛选性质,任意序列可表示为:
$$x[n] = \sum_{k} x[k] \delta[n-k]$$
这可以理解为将 $x[n]$ 分解为 $\delta[n-k]$ 的线性组合——类似于将向量表示为基向量的线性组合。傅里叶分析的思想则是:换一组基——用复指数 $e^{j\omega n}$ 代替 $\delta[n-k]$,将信号分解为不同频率分量的叠加。
3.8 工程应用视角 / Engineering Perspective
3.8.1 从模拟到数字——ADC 的角色
graph LR
A["模拟信号 x(t)"] -->|"抗混叠滤波"| B["带限信号"]
B -->|"采样器 (Sample & Hold)"| C["离散时间信号 x[n]"]
C -->|"量化器 (Quantizer)"| D["数字信号"]
D -->|"编码器 (Encoder)"| E["二进制码流"]
style A fill:#1565C0,color:#fff
style B fill:#228B22,color:#fff
style C fill:#5E35B1,color:#fff
style D fill:#E65100,color:#fff
style E fill:#C62828,color:#fff
模数转换器 (Analog-to-Digital Converter, ADC) 完成从连续到离散再到量化的全过程。其中:
- 采样决定了离散序列的时间分辨率
- 量化决定了每个样本的幅度精度
- 采样率的选择直接影响信号质量
3.8.2 采样率的选择
采样率 $f_s$ 的选择是数字信号系统设计中最关键的决策之一:
- 过低:违反奈奎斯特条件,导致混叠失真 (Aliasing Distortion)——不同频率的信号在采样后变得无法区分
- 过高:数据量大,处理复杂度高,但能更好保留信号细节
- 工程折中:通常取 $f_s = (2.5 \sim 4) \times f_{\max}$,其中 $f_{\max}$ 为信号最高频率分量
典型应用中的采样率:
| 应用 | 采样率 |
|---|---|
| 语音通话 | 8 kHz |
| 音频 CD | 44.1 kHz |
| 超声波成像 | 10–100 MHz |
| 软件定义无线电 (SDR) | 数 MHz 至数 GHz |
3.8.3 数字信号处理的优势
为什么我们要费尽周折将信号转为离散序列再处理?
- 精度可控:量化位数决定精度,一旦确定即可复现
- 灵活性:修改算法只需改软件/固件,无需更换硬件
- 可编程性:通用 DSP 芯片或 FPGA 可处理任意离散序列
- 抗干扰:数字信号在传输中更不易受噪声影响
3.9 本章小结
| 概念 | 核心公式 | 要点 |
|---|---|---|
| 离散信号定义 | $x[n]$, $n \in \mathbb{Z}$ | 自变量取整数,非整数处无定义 |
| 采样 | $x[n] = x_c(nT_s)$ | 连续到离散的桥梁 |
| 单位样本 | $\delta[n]$ | 筛选性:任意序列的分解基础 |
| 单位阶跃 | $u[n]$ | 与 $\delta[n]$ 互为累积/差分 |
| 周期性 | $\omega_0/(2\pi) = k/N$ | 离散正弦不一定周期 |
| 能量 | $E = \sum | x[n] |
| 功率 | $P = \lim \frac{1}{2N+1}\sum | x[n] |
| 向量视角 | $\langle x,y \rangle = \sum x[n]y^*[n]$ | 为傅里叶分析铺路 |
下一章预告:有了离散时间信号的基础,第 4 章将引入线性时不变系统 (LTI Systems) 的概念,研究序列经过系统后的变换关系,并重点讨论卷积 (Convolution) 运算。