2. Z变换的定义:双边Z变换与单边Z变换的数学定义,收敛域(ROC)的概念
好,咱们正式开始啃Z变换这块硬骨头。
说实话,我第一次接触Z变换的时候,觉得它就是拉普拉斯变换的“离散版”,没啥新鲜的。后来做项目踩了坑才发现——嗯,事情没那么简单。Z变换的核心,说白了就两件事:怎么定义,以及什么时候有意义。
2.1 双边Z变换:最通用的定义
先看数学定义。对于一个离散时间序列 x[n],它的双边Z变换定义为:
X(z) = Σ_{n=-∞}^{∞} x[n] · z^{-n}
这里 z 是一个复变量。你可以把 z 想象成一个“放大镜+旋转器”——它同时调整信号的幅度和相位。
我个人习惯把 z 写成极坐标形式:z = r·e^{jω}。这样一看,z^{-n} = r^{-n}·e^{-jωn}。r 控制幅度缩放,ω 控制频率旋转。是不是有点感觉了?
关键点:双边Z变换的求和范围是从 -∞ 到 +∞。这意味着它同时考虑了“过去”和“未来”的样本。对于因果系统(n<0时x[n]=0),双边和单边结果一样;但对于非因果信号,两者天差地别。
2.2 单边Z变换:工程中的“实用版”
单边Z变换的定义是:
X(z) = Σ_{n=0}^{∞} x[n] · z^{-n}
注意,求和从 n=0 开始。为什么工程上更常用单边?
我在做数字滤波器设计时遇到过一个问题:用双边Z变换分析一个因果系统,结果算出来的系统函数和实际仿真对不上。折腾了半天才发现——双边Z变换默认信号从负无穷开始,而实际系统都是从某个时刻(比如 n=0)开始工作的。单边Z变换正好匹配这种场景。
我的经验:处理初始条件(比如数字控制器的状态初始化)时,单边Z变换是神器。它天然包含了 x[0], x[-1] 这些初始值的信息。双边Z变换虽然数学上更“完美”,但处理初值问题时要额外小心。
2.3 收敛域(ROC):Z变换的“生命线”
定义写完了,但有个大问题:这个无穷级数什么时候收敛?
收敛域(Region of Convergence, ROC)就是使 X(z) 收敛的所有 z 值的集合。没有ROC,Z变换就是一个空壳子——你根本不知道它代表什么信号。
举个例子:
信号1:x₁[n] = aⁿ · u[n] (因果,右边序列)
信号2:x₂[n] = -aⁿ · u[-n-1] (非因果,左边序列)
它们的Z变换表达式居然一模一样:
X(z) = 1 / (1 - a·z⁻¹)
但ROC完全不同:
信号1的ROC:|z| > |a|
信号2的ROC:|z| < |a|
你看,同一个表达式,对应两个完全不同的信号。区别就在ROC上。我曾经在项目里用MATLAB的 ztrans 函数算了一个序列的Z变换,没指定ROC,结果反变换回来完全不是我要的信号——就是因为默认的ROC和实际信号不匹配。
避坑指南:Z变换表达式 + ROC = 唯一对应一个序列。只给表达式不给ROC,就像只给地址不给城市——你找不到地方。
2.4 ROC的三大性质(记牢了)
我总结了三条,你写代码、做推导时经常用到:
- ROC内不含极点:极点处 X(z) 发散,ROC必须避开极点。
- 右边序列的ROC在圆外:如果 x[n] 只在 n≥N₁ 时有值,ROC是某个圆的外部区域。
- 左边序列的ROC在圆内:如果 x[n] 只在 n≤N₂ 时有值,ROC是某个圆的内部区域。
双边序列(既有右边部分又有左边部分)的ROC是环形区域——两个圆之间的部分。如果两个圆不重叠,那ROC就是空集,Z变换不存在。
2.5 知识体系图
下面这张图帮你理清本章的核心逻辑:
2.6 常见信号的Z变换对(速查表)
| 序列 x[n] | Z变换 X(z) | ROC |
|---|---|---|
| δ[n] | 1 | 整个z平面 |
| u[n] | 1 / (1 - z⁻¹) | |z| > 1 |
| aⁿ · u[n] | 1 / (1 - a·z⁻¹) | |z| > |a| |
| -aⁿ · u[-n-1] | 1 / (1 - a·z⁻¹) | |z| < |a| |
| n·aⁿ · u[n] | a·z⁻¹ / (1 - a·z⁻¹)² | |z| > |a| |
一个小技巧:记不住ROC?你就想——因果信号(右边)的ROC在圆外,非因果信号(左边)的ROC在圆内。极点就像一堵墙,ROC永远在墙的同一侧(对于右边序列)或另一侧(对于左边序列)。
好了,这一章的核心就这些。定义是骨架,ROC是灵魂。下次你看到任何一个Z变换表达式,第一反应应该是:它的ROC是什么? 养成这个习惯,后面学逆Z变换、系统稳定性分析时,你会感谢自己的。
公众号:蓝海资料掘金营,微信deep3321