离散时间信号与系统
前置知识回顾
本节是 DSP 的入口。需要先确认几个基础概念:
- 连续时间信号:时间变量连续,记作 $x_a(t)$。
- 离散时间信号:时间变量只取整数索引,记作 $x[n]$。
- 数字信号:时间离散,幅值量化成有限位。
- 系统:把输入 $x[n]$ 映射为输出 $y[n]$ 的规则。
数字信号处理的对象不是连续波形,而是沿时间轴按固定间隔取样后得到的一串样本值:$x[n]=x_a(nT),\;n\in\mathbb{Z}$。这里 $T$ 是采样间隔,$n$ 只是整数索引。
1.1 模拟信号的数字化过程
模拟信号 $x_a(t)$ 变成数字信号需要三个步骤:采样→量化→编码。
采样是模拟信号数字化的第一步。数学上,对连续信号 $x_a(t)$ 以间隔 $T$ 取样,得到离散序列:
采样过程可以用冲激串乘法描述:$x_p(t)=x_a(t)\cdot\sum_{k=-\infty}^{\infty}\delta(t-kT)$,冲激串在每隔 $T$ 秒的整数倍处留下一个样本。
以连续余弦信号 $x(t)=\cos(2\pi f_m t+\theta)$ 为例,采样后得到离散序列:
其中 $f_s=1/T$ 是采样频率。离散序列的周期性取决于比值 $f_m/f_s$:
- $f_m/f_s=1/2$ 时,$x[n]=\cos(\pi n+\theta)$,周期 $N=2$。
- $f_m/f_s=1/4$ 时,$x[n]=\cos\big(\frac{\pi}{2}n+\theta\big)$,周期 $N=4$。
- $f_m/f_s=1/(4\pi)$ 时,$x[n]=\cos\big(\frac{1}{2}n+\theta\big)$,无周期(因为 $1/(2\pi)$ 是无理数)。
量化是把连续的样本值映射到有限个离散电平。若量化器有 $L=2^B$ 个电平($B$ 是位数),则量化误差最大为半个量化步长。量化是不可逆的有损操作,这是数字信号与离散信号的本质区别——离散信号的幅值仍为连续值,数字信号的幅值已被量化为有限离散值。
编码是把量化后的离散值写成二进制比特流,便于存储和传输。
1.2 三种表示方式
同一序列通常有三种等价表达方式:
| 表示方式 | 例子(以 $\delta[n]$ 为例) | 适用场景 |
|---|---|---|
| 集合符号 | $x=\{...,0,\underset{\uparrow}{1},0,0,...\}$ | 离散取值题、波形读数 |
| 闭式公式 | $\delta[n]=\begin{cases}1,&n=0\\0,&n\neq 0\end{cases}$ | 代数推导、变换分析 |
| 图形(stem plot) | 见下方单位脉冲示意图 | 建立直觉、结果对比 |
常见序列构成后续卷积、变换和系统分析的基础语言:
| 序列 | 定义 | 作用 |
|---|---|---|
| 单位脉冲 | $\delta[n]=1(n=0),0(n\ne0)$ | 构造任意序列、定义单位抽样响应 |
| 单位阶跃 | $u[n]=1(n\ge0),0(n<0)$ | 表示因果性与截断范围 |
| 矩形序列 | $R_N[n]=u[n]-u[n-N]$ | 有限长截取、加窗 |
| 实指数序列 | $x[n]=a^n$ | 增长/衰减、LTI 稳定性 |
| 复指数序列 | $e^{j\omega n}$ | 频域分析、LTI 特征函数 |
| 正弦序列 | $A\sin(\omega n+\varphi)$ | 周期信号模型 |
| 周期序列 | $x[n]=x[n+N]$ | DFS/DFT 的基础 |
任意序列都可以分解为移位单位脉冲的加权和:$x[n]=\sum_k x[k]\delta[n-k]$。这是卷积的起点。
2.1 与连续信号的对照
| 连续信号 | 离散序列 | 关系 |
|---|---|---|
| 连续冲激 $\delta(t)$ | 单位脉冲 $\delta[n]$ | 连续冲激是广义函数,离散脉冲是普通数值 1 |
| 连续阶跃 $u(t)$ | 单位阶跃 $u[n]$ | 作用一致,区分"已发生"与"未发生" |
| 矩形脉冲 $g_\tau(t)$ | 矩形序列 $R_N[n]$ | 都是有限支撑窗口 |
| 实指数 $e^{\sigma t}$ | 实指数 $a^n$ | 离散多绝对值判据($a$ 可为负) |
| 连续复指数 $e^{j\Omega t}$ | 离散复指数 $e^{j\omega n}$ | 离散有 $2\pi$ 周期性 |
| 连续正弦 $A\sin(\Omega t+\varphi)$ | 离散正弦 $A\sin(\omega n+\varphi)$ | 离散正弦未必周期 |
2.2 倍乘与移位
倍乘:$(A\cdot x)[n]=A\cdot x[n]$,序列整体缩放。移位:$x[n-m]$ 右移 $m$ 位。倍乘+移位是构造任意有限长序列的两个基本动作:$x[n]=3\delta[n-2]+2R_4[n-5]$ 表示"$n=2$ 处高度 3 的脉冲"加上"$n=5..8$ 处高度 2 的方块"。
2.3 图形展示
3.1 逐点运算:加、减、乘
- 加法:$(x+y)[n]=x[n]+y[n]$。信号叠加或目标+噪声。
- 减法:$(x-y)[n]=x[n]-y[n]$。求误差或差分。
- 乘法:$(x\cdot y)[n]=x[n]\cdot y[n]$。对应样点相乘(调制/加窗),不是卷积。
3.2 索引操作
- 移位:$x[n-m]$ 右移 $m$ 位。
- 翻褶:$x[-n]$ 绕 $n=0$ 翻转,是卷积图解法的关键第一步。
- 抽取与插值:时间轴压缩和扩展。
3.3 累积运算
- 差分:$\nabla x[n]=x[n]-x[n-1]$,离散版变化率。
- 累加:$y[n]=\sum_{k=-\infty}^{n}x[k]$,离散版积分。
卷积是两个序列之间的一种特殊运算,它把一个序列"翻转、滑动、逐点相乘再求和"得到第三个序列。定义:
直观上,卷积就是把 $h[m]$ 翻折成 $h[-m]$,再逐位右移得到 $h[n-m]$,在每个位置上与 $x[m]$ 对齐相乘后求和。
4.1 图解法
图解法四步:翻褶($h[k]\to h[-k]$)→ 移位($h[-k]\to h[n-k]$)→ 相乘(找出重叠区域)→ 求和(重叠乘积之和)。手工做时最重要的是先找支撑区间的交集。
4.2 表格滑动法
两个有限长序列较短时,把一个序列翻转后在另一个上滑动,每滑一位就对齐项相乘求和。直观但长序列易漏项。
4.3 对位相乘相加法
把两个序列像竖式乘法一样排列:将其中一个序列反转,然后逐行右移一位,对齐位置的数相乘,最后把每一列的乘积加起来。例如 $x[n]=\{2,1,3\}$($n=0$ 起始)、$h[n]=\{1,2\}$:
2 1 3
× 1 2
---------------
4 2 6 ← 2 × (2,1,3)
2 1 3 ← 1 × (2,1,3) 左移一位
---------------
2 5 5 6
所以 $y[n]=x[n]*h[n]=\{2,5,5,6\}$。每一列就是对齐后相乘再相加,因此叫对位相乘相加法。
4.4 直接求和核对
| $n$ | 非零乘积 | $y[n]$ |
|---|---|---|
| 0 | $x[0]h[0]=2\cdot1$ | 2 |
| 1 | $x[0]h[1]+x[1]h[0]=2\cdot2+1\cdot1$ | 5 |
| 2 | $x[1]h[1]+x[2]h[0]=1\cdot2+3\cdot1$ | 5 |
| 3 | $x[2]h[1]=3\cdot2$ | 6 |
4.5 长度规律
$L_y=L_x+L_h-1$。上例 $L_x=3,L_h=2$,$L_y=4$,与结果 $\{2,5,5,6\}$ 一致。
4.6 运算规则
| 性质 | 公式 | 含义 |
|---|---|---|
| 交换律 | $x[n]*h[n]=h[n]*x[n]$ | 两个序列角色可互换 |
| 结合律 | $(x*h_1)*h_2=x*(h_1*h_2)$ | 多次卷积可合并 |
| 分配律 | $x*(h_1+h_2)=x*h_1+x*h_2$ | 并联可拆开 |
| 单位脉冲 | $x[n]*\delta[n]=x[n]$ | $\delta[n]$ 是卷积单位元 |
| 移位脉冲 | $x[n]*\delta[n-n_0]=x[n-n_0]$ | 等价于序列平移 |
4.7 常见卷积结果速查
| $x[n]$ | $h[n]$ | $y[n]=x[n]*h[n]$ | 说明 |
|---|---|---|---|
| $x[n]$ | $\delta[n]$ | $x[n]$ | 单位元 |
| $x[n]$ | $\delta[n-n_0]$ | $x[n-n_0]$ | 平移 |
| $\delta[n-a]$ | $\delta[n-b]$ | $\delta[n-(a+b)]$ | 冲激位置相加 |
| $u[n]$ | $u[n]$ | $(n+1)u[n]$ | 阶跃卷积=斜坡 |
| $u[n-a]$ | $u[n-b]$ | $(n-a-b+1)u[n-a-b]$ | 移位阶跃 |
| $u[n]$ | $a^n u[n]$ | $\frac{1-a^{n+1}}{1-a}u[n]$ | 阶跃与指数 |
| $a^n u[n]$ | $b^n u[n]$ | $\frac{a^{n+1}-b^{n+1}}{a-b}u[n]$ | 不同底指数 |
例题区
例题 1:移位阶跃序列的卷积
求 $y[n]=u[n-3]*u[n-4]$。
思路:$u[n-n_0]=u[n]*\delta[n-n_0]$。于是 $y[n]=(u[n]*u[n])*(\delta[n-3]*\delta[n-4])$。$u[n]*u[n]=(n+1)u[n]$,$\delta[n-3]*\delta[n-4]=\delta[n-7]$。所以 $y[n]=(n-6)u[n-7]$。
例题 2:指数序列与阶跃序列的卷积
求 $y[n]=a^n u[n]*u[n]$($0<a<1$)。$y[n]=\sum_{k=0}^{n}a^k=\frac{1-a^{n+1}}{1-a}u[n]$。
例题 3:有限长指数与右边指数的卷积
已知 $h[n]=\alpha^n\;(0\le n\le N-1)$,$x[n]=\beta^{n-n_0}\;(n\ge n_0)$,求 $y[n]$。关键:重叠区间 $0\le k\le\min(N-1,n-n_0)$,分三段求解。
-- 序列和卷积都有了,接下来看把这些序列送进"系统"会发生什么 --
离散时间系统记为 $y[n]=T\{x[n]\}$,把输入序列映射为输出序列。不同性质的系统适用于不同的分析方法。
5.1 线性系统
线性系统
满足叠加原理:$T\{a_1x_1[n]+a_2x_2[n]\}=a_1T\{x_1[n]\}+a_2T\{x_2[n]\}$。包含齐次性(输入缩放 $a$ 倍,输出也缩放 $a$ 倍)和叠加性(两个输入之和的输出等于各自输出之和)。
5.2 时不变系统
时不变系统
系统规则不随时间变化:若 $y[n]=T\{x[n]\}$,则对任意 $n_0$ 有 $T\{x[n-n_0]\}=y[n-n_0]$。即输入延迟多少,输出也延迟同样数量。
5.3 LTI 系统
LTI 系统
同时满足线性和时不变的系统。对 LTI 系统,任意输入可分解为移位单位脉冲的加权和,系统对每个移位脉冲的响应只是 $h[n]$ 的移位。于是输出等于输入与 $h[n]$ 的卷积:
卷积在系统分析中的意义:$h[n]$ 就是系统的单位抽样响应,它完全刻画了一个 LTI 系统。
5.4 因果性
因果系统
输出不能依赖未来输入。对 LTI 系统,充要条件是 $h[n]=0\;(n<0)$。直观上,$h[n]$ 在负时间非零意味着脉冲还没输入系统就已响应。
判断方法:看系统输出 $y[n]$ 是否只依赖 $x[n],x[n-1],x[n-2],\dots$(当前和过去),而不含 $x[n+1]$ 等未来项。
5.5 稳定性
BIBO 稳定
Bounded Input Bounded Output:有界输入产生有界输出。对 LTI 系统,充要条件是单位抽样响应绝对可和:$\sum_{n=-\infty}^{\infty}|h[n]|<\infty$。
LTI 系统因果性判据
对 LTI 系统,因果的充要条件是 $h[n]=0\;(n<0)$。
LTI 系统稳定性判据
对 LTI 系统,BIBO 稳定的充要条件是 $\sum_{n=-\infty}^{\infty}|h[n]|<\infty$。
5.6 判定速查
| 性质 | 判定思路 | 常见结论 | 易错点 |
|---|---|---|---|
| 线性 | 检验叠加与齐次性 | $y[n]=x^2[n]$ 非线性 | 非线性≠时变 |
| 时不变 | 输入延时,输出等效延时 | $y[n]=x^2[n]$ 时不变 | 含 $n$ 常时变 |
| 因果 | 输出只依赖当前和过去输入 | $y[n]=x[n+1]$ 非因果 | 提前项不是"右移" |
| 稳定 | 有界输入有界输出 | LTI 等价于 $\sum|h[n]|<\infty$ | 指数增长不稳定 |
例题区
验证 $y[n]=3x[n]$ 是否线性
齐次性:输入 $ax[n]$,输出 $3ax[n]=a\cdot3x[n]=ay[n]$ ✓。
叠加性:输入 $x_1[n]+x_2[n]$,输出 $3(x_1[n]+x_2[n])=3x_1[n]+3x_2[n]=y_1[n]+y_2[n]$ ✓。
结论:线性。
验证 $y[n]=x^2[n]$ 是否线性
齐次性:输入 $ax[n]$,输出 $(ax[n])^2=a^2x^2[n]$,而 $ay[n]=ax^2[n]$。$a^2\neq a$(除非 $a=0$ 或 $a=1$)。
叠加性:输入 $x_1[n]+x_2[n]$,输出 $(x_1[n]+x_2[n])^2=x_1^2+2x_1x_2+x_2^2$,而 $y_1[n]+y_2[n]=x_1^2+x_2^2$。多了交叉项 $2x_1x_2$。
结论:非线性。
验证 $y[n]=2x[n]-x[n-1]$ 是否时不变
原系统:输入 $x[n]$,输出 $y[n]=2x[n]-x[n-1]$。
输入延迟 $n_0$ 后:$y'[n]=2x[n-n_0]-x[n-n_0-1]$。
原输出延迟 $n_0$:$y[n-n_0]=2x[n-n_0]-x[n-n_0-1]$。
$y'[n]=y[n-n_0]$ ✓。
结论:时不变。
验证 $y[n]=x[n]+n$ 是否时不变
原系统:输入 $x[n]$,输出 $y[n]=x[n]+n$。
输入延迟 $n_0$ 后:$y'[n]=x[n-n_0]+n$。
原输出延迟 $n_0$:$y[n-n_0]=x[n-n_0]+(n-n_0)$。
$y'[n]-y[n-n_0]=n-(n-n_0)=n_0\neq 0$。
结论:时变。原因是规则里显式含 $n$,延迟输入后 $n$ 本身不会延迟。
验证 $y[n]=nx[n]$ 是否时不变
原系统:输入 $x[n]$,输出 $y[n]=nx[n]$。
输入延迟 $n_0$ 后:$y'[n]=nx[n-n_0]$。
原输出延迟 $n_0$:$y[n-n_0]=(n-n_0)x[n-n_0]$。
$y'[n]=nx[n-n_0]\neq(n-n_0)x[n-n_0]=y[n-n_0]$。
结论:时变。系数 $n$ 随时间增长,延迟输入后系数不会跟着变。
例题 4:判断 $y[n]=x^2[n]$ 的线性与时不变
非线性(展开 $(ax_1+bx_2)^2$ 出现交叉项),但时不变($x[n-n_0]$ 代入后输出 $x^2[n-n_0]=y[n-n_0]$)。
例题 6:分析 LTI 系统 $h[n]=a^nu[n]$ 的因果性与稳定性
题目:设线性时不变系统的单位脉冲响应为 $h[n]=a^nu[n]$,式中 $a$ 是常数,分析该系统的因果性和稳定性。
第一步:因果性分析
对 LTI 系统,因果的充要条件是 $h[n]=0\;(n<0)$。
由于 $u[n]$ 在 $n<0$ 时为 0,所以 $h[n]=a^nu[n]=0\;(n<0)$。
结论:系统对所有 $a$ 都是因果的。
第二步:稳定性分析
对 LTI 系统,BIBO 稳定的充要条件是 $\sum_{n=-\infty}^{\infty}|h[n]|<\infty$。
这是一个等比级数:
- 当 $|a|<1$ 时,$\sum_{n=0}^{\infty}|a|^n=\frac{1}{1-|a|}<\infty$,级数收敛,系统稳定。
- 当 $|a|\ge1$ 时,$|a|^n$ 随 $n$ 增长不衰减,级数发散,系统不稳定。
最终结论:系统对所有 $a$ 都是因果的;当 $|a|<1$ 时稳定,$|a|\ge1$ 时不稳定。
—— 有了系统描述工具,接下来看离散系统的另一种描述方式:差分方程 ——
6.1 D 延时单元
离散时间系统最基本的构件是单位延时单元(Delay),通常用方框 D 表示。它把输入信号延迟一个采样周期:
输入 $y[n]$ 经过 D 后输出 $y[n-1]$——当前时刻的输入变成下一时刻的输出。所有离散系统的结构都可以用 D 延时单元、加法器和乘法器组合而成。方框图与信号流图的具体画法见下一篇 离散时间系统的模拟与基本原理。
6.2 差分方程:一阶反馈系统
把延时单元和反馈路径组合,就得到差分方程的物理实现。下面是一个一阶 LTI 系统:
对应的差分方程:
输出由当前输入和过去输出递推决定。只要给定初始条件,就能一步一步算出所有后续值。
6.3 常系数线性差分方程
一般形式:$\sum_{k=0}^{N}d_k y[n-k]=\sum_{k=0}^{M}p_k x[n-k]$。当前输出由过去 $N$ 个输出和过去 $M$ 个输入递推决定。
6.4 FIR 系统
FIR 系统
FIR(Finite Impulse Response,有限长单位抽样响应)系统的差分方程不含输出反馈项,只有输入加权:
令 $x[n]=\delta[n]$ 得 $h[n]=\sum_{k=0}^{N-1}\alpha_k\delta[n-k]$。由于只有有限个 $\delta[n-k]$,$h[n]$ 是有限长序列,所以 FIR 系统必稳定。
6.5 实验 2:差分方程与卷积的等价
MATLAB:filter(p,d,x) 从差分方程递推;conv(x,h) 从单位抽样响应卷积。两种方法对 FIR 系统等价;对 IIR 系统,$h[n]$ 无限长,只能截断观察。
实验 2 系统一:IIR
$y[n]+0.6y[n-1]+0.09y[n-2]=x[n]-x[n-1]$。递推得 $h[0]=1,h[1]=-1.6,h[2]=0.87,\dots$。
实验 2 系统二:FIR 移动平均
$y[n]=0.5\sum_{k=1}^{5}x[n-k]$,$h[n]=0.5\sum\delta[n-k]$。
例题区
例题 7:差分方程递推求 $h[n]$
题目:已知线性因果系统的差分方程为 $y[n]-\frac{1}{2}y[n-1]=x[n]$,求单位脉冲响应 $h[n]$。
解:令输入 $x[n]=\delta[n]$,初始条件 $y[-1]=0$(零状态)。
- $n=0$:$y[0]-\frac{1}{2}y[-1]=\delta[0]=1$,得 $y[0]=1$。
- $n=1$:$y[1]-\frac{1}{2}y[0]=\delta[1]=0$,得 $y[1]=\frac{1}{2}y[0]=0.5$。
- $n=2$:$y[2]-\frac{1}{2}y[1]=\delta[2]=0$,得 $y[2]=\frac{1}{2}y[1]=0.25$。
- $n=3$:$y[3]-\frac{1}{2}y[2]=\delta[3]=0$,得 $y[3]=\frac{1}{2}y[2]=0.125$。
规律:$h[n]=(\frac{1}{2})^n u[n]$。
方法二:特征根法
差分方程 $y[n]-\frac{1}{2}y[n-1]=x[n]$ 的齐次方程为 $y[n]-\frac{1}{2}y[n-1]=0$。
特征方程:$\lambda-\frac{1}{2}=0$,特征根 $\lambda=\frac{1}{2}$。齐次解为 $y_h[n]=C\big(\frac{1}{2}\big)^n$。
令输入 $x[n]=\delta[n]$,$n=0$ 时:
代入齐次解:$h[0]=C=1$,所以 $h[n]=\big(\frac{1}{2}\big)^n u[n]$。
①递推法:逐一代入找规律,适合手工验算;②特征根法:解特征方程得通解,由 $h[0]$ 定常数,更通用,高阶系统尤其有效。
—— 差分方程描述了系统的递推关系。接下来看系统在有初始状态时的响应分解 ——
系统总响应可分解为两部分:零状态响应(初始状态为零,仅由输入引起)$y_{zs}[n]=x[n]*h[n]$;零输入响应(输入为零,仅由初始状态引起)满足齐次差分方程 $\sum d_k y_{zi}[n-k]=0$。总响应 $y[n]=y_{zi}[n]+y_{zs}[n]$。
例题区
例题 8:一阶系统零状态与零输入
系统 $y[n]-0.5y[n-1]=x[n]$,$y[-1]=1$,$x[n]=u[n]$。
$y_{zi}[n]=(0.5)^{n+1}u[n]$(由初始条件决定)。$h[n]=(0.5)^n u[n]$,$y_{zs}[n]=2[1-(0.5)^{n+1}]u[n]$。$y[n]=[2-1.5(0.5)^n]u[n]$。
—— 最后看一个特殊的序列性质:离散正弦的周期性 ——
离散复指数 $e^{j\omega_0 n}$ 周期要求 $\omega_0/(2\pi)\in\mathbb{Q}$。若为有理数,最小周期由最简分数分母决定;若为无理数,则非周期。
1 整数 $N$ → 周期为 $N$;
2 既约分数 $P/Q$ → 周期为分子 $P$;
3 无理数 → 非周期。
例题区
例题 9:判断正弦序列的周期性
$x_1[n]=\sin(\pi n/5)$:$2\pi/\omega_0=10$,周期 $N=10$。
$x_2[n]=\sin(3n/5)$:$2\pi/\omega_0=10\pi/3$ 无理数,非周期(常见陷阱:分母含 $\pi$ 就非周期)。
$x_3[n]=\sin(3\pi n/7)$:$2\pi/\omega_0=14/3$,周期 $N=14$。
例题 10:复合正弦的周期
$x[n]=2\sin(\pi n/16)+\cos(\pi n/8)$。$N_1=32$,$N_2=16$,$\operatorname{lcm}(32,16)=32$。周期 $N=32$。
时域链条已完整:差分方程 $\leftrightarrow$ 单位抽样响应 $h[n]$ $\leftrightarrow$ 卷积输出 $y[n]=x[n]*h[n]$。下一节 Z 变换 把差分方程变成代数式,DTFT/DFT 在频域分析信号。
参考来源
- 《数字信号处理教程(第五版)》第 1 章
- 第一讲课程讲义
- 第一讲作业与答案
- 实验 1《常见离散信号的 MATLAB 产生和图形显示》
- 实验 2《离散系统的差分方程、单位抽样响应和卷积分析》
- MIT OCW · Digital Signal Processing
- DSP First