第一章:离散时间信号与系统

1.1 序列表示——说白了就是数字世界的“快照”

离散时间信号,我习惯叫它“序列”。你想想看,连续信号就像一条连续的曲线,而离散信号就是在这条曲线上每隔一段距离拍一张照片。这些“照片”按时间顺序排好,就是序列了。

数学上,我们用 x[n] 来表示一个序列。n 是整数,代表时间索引。比如 x[0] 是第 0 个时刻的值,x[1] 是第 1 个时刻的值。嗯,这里要注意:n 只能是整数,不能是 1.5 或者 2.3。

核心概念:序列 x[n] 只在整数点上有定义,其他时间点我们不考虑。这和连续信号完全不同。

常见的序列有几种:

  • 单位脉冲序列 δ[n]:只在 n=0 时为 1,其余全为 0。这是离散系统的“砖块”,任何序列都能用它拼出来。
  • 单位阶跃序列 u[n]:n≥0 时为 1,n<0 时为 0。相当于一个开关,从某个时刻开始一直开着。
  • 实指数序列:x[n] = a^n,a 是实数。a 的绝对值小于 1 时衰减,大于 1 时发散。

我在项目中遇到过一个问题:采集到的信号明明是连续的,但 ADC 采样后变成了序列。这时候如果采样率不够,就会出现混叠——说白了就是高频信号伪装成了低频信号,坑得很。

个人经验:处理序列时,我建议先把索引范围画清楚。比如 n 从 -5 到 10,画个图一目了然。别偷懒,画图能避免 80% 的索引错误。

1.2 线性移不变系统——系统的“身份证”

一个系统,说白了就是把输入序列变成输出序列的“黑盒子”。我们最关心两类性质:线性和移不变性。

线性:系统对叠加和缩放保持“老实”。如果输入 x1[n] 得到 y1[n],x2[n] 得到 y2[n],那么输入 a·x1[n] + b·x2[n] 应该得到 a·y1[n] + b·y2[n]。不满足这个,就是非线性系统。

移不变性:输入延迟 k 个时刻,输出也延迟 k 个时刻。说白了就是系统不“挑时间”,今天处理信号和明天处理信号,行为一样。

重要结论:线性移不变系统(LSI 系统)完全由它的单位脉冲响应 h[n] 决定。输入 x[n] 和 h[n] 做卷积,就得到输出 y[n]。

卷积公式:

y[n] = x[n] * h[n] = Σ x[k] · h[n-k]   (k 从 -∞ 到 ∞)

这个公式我刚开始学的时候觉得挺抽象。后来做音频滤波项目时,我拿一个脉冲信号过滤波器,看输出波形——那就是 h[n] 啊!瞬间就理解了。

避坑指南:我曾经在计算卷积时搞错了索引范围。两个有限长序列卷积,结果长度是 Lx + Lh - 1。比如 x 有 5 个点,h 有 3 个点,结果就是 7 个点。少一个都不对。

1.3 因果性与稳定性——系统能不能用,就看这两条

因果性和稳定性,是判断一个系统是否“靠谱”的两个硬指标。

因果性:系统的输出只依赖于当前和过去的输入,不依赖未来的输入。说白了就是“不能预知未来”。数学上,如果 n<0 时 h[n] = 0,系统就是因果的。

为什么重要?你想想看,一个实时系统,比如手机通话,如果它需要“未来的声音”才能处理当前的声音,那不就卡住了吗?

稳定性:输入有界,输出也有界。数学上叫 BIBO 稳定(Bounded Input Bounded Output)。判断条件是:h[n] 的绝对值之和是有限的。

稳定性条件:Σ |h[n]| < ∞   (n 从 -∞ 到 ∞)

我在做数字滤波器设计时,遇到过滤波器发散的情况。一查,原来是极点跑到了单位圆外面——系统不稳定了。输出越来越大,最后全是 NaN。

快速判断法:对于因果系统,看 h[n] 是否随着 n 增大而衰减到 0。如果 h[n] 不衰减甚至增长,那系统肯定不稳定。

1.4 知识体系总览

下面这张图,是我梳理的本章核心逻辑。你看一眼,就能把知识点串起来。

离散时间信号与系统 · 知识体系 离散时间信号(序列) 离散时间系统 单位脉冲 δ[n] 单位阶跃 u[n] 实指数序列 线性 移不变性 因果性 稳定性 核心运算:卷积 y[n] = x[n] * h[n] LSI系统由单位脉冲响应 h[n] 完全描述

1.5 小结与实用建议

这一章的内容,说白了就是离散信号处理的“地基”。序列表示是语言,线性移不变是规则,因果稳定是约束。这三样东西搞明白了,后面学频率响应、滤波器设计就顺了。

我个人的习惯是:拿到一个新系统,先问三个问题——

  1. 它是线性的吗?
  2. 它是移不变的吗?
  3. 它稳定吗?

如果前两个答案是“是”,那恭喜你,可以用卷积和频率响应来分析。如果第三个答案是“否”,那赶紧改设计,不稳定的系统在实际中没法用。

实用技巧:判断因果性,看 h[n] 在 n<0 时是不是全零。判断稳定性,看 Σ|h[n]| 是不是有限。这两个判断,用 MATLAB 或者 Python 几行代码就能验证。

好了,第一章就到这里。记住:序列是离散世界的语言,卷积是系统的灵魂,因果和稳定是系统的“底线”。

专注资料整理