3. Z变换基础:从离散时间到复频域的桥梁
各位同学,今天我们聊Z变换。说实话,我刚接触这个工具时,觉得它就是个数学游戏。直到我在一个数字滤波器项目中,被一个看似简单的系统搞到崩溃——时域分析怎么都算不对,换了Z变换,十分钟搞定。嗯,从那以后,我再也不敢小看它了。
核心思想:Z变换把离散时间序列映射到复平面,让差分方程变成代数方程。说白了,就是把“麻烦”变成“简单”。
3.1 Z变换的定义
对于离散时间序列 x[n],它的Z变换定义为:
X(z) = Σ_{n=-∞}^{∞} x[n] · z^{-n}
其中 z 是复变量。你想想看,这个求和式其实就是在做“加权求和”,权重是 z^{-n}。我个人习惯把 z 看作一个“伸缩+旋转”的算子,这样理解起来更直观。
Z变换有两种形式:
- 双边Z变换:n 从 -∞ 到 ∞,适用于一般序列
- 单边Z变换:n 从 0 到 ∞,适用于因果系统(我项目中90%的情况用这个)
我的经验:做控制系统时,如果系统是因果的(输出只依赖当前及过去输入),直接用单边Z变换,省心省力。
3.2 Z变换的性质——这些你得记住
性质这东西,死记硬背没用。我在调试一个数字PID控制器时,发现用线性性质拆解信号,再用时移性质处理延迟,整个推导过程行云流水。下面是我常用的几个性质:
| 性质 | 时域 | Z域 | 说明 |
|---|---|---|---|
| 线性 | a·x[n] + b·y[n] | a·X(z) + b·Y(z) | 最常用,没有之一 |
| 时移 | x[n-k] | z^{-k}·X(z) | 处理延迟的利器 |
| 卷积 | x[n] * y[n] | X(z)·Y(z) | 系统分析的核心 |
| 初值定理 | x[0] | lim_{z→∞} X(z) | 快速求初始值 |
| 终值定理 | lim_{n→∞} x[n] | lim_{z→1} (1-z^{-1})X(z) | 判断稳态误差 |
注意:终值定理只适用于系统稳定且极限存在的情况。我曾经在一个不稳定的系统上硬套终值定理,算出来的结果完全不对——后来才发现系统极点都在单位圆外,根本不能用。
3.3 常用序列的Z变换——背下来,省时间
这些是基础,我建议你像背乘法口诀一样记住它们。我在做数字滤波器设计时,天天跟这些打交道:
1. 单位脉冲序列 δ[n] ←→ 1
2. 单位阶跃序列 u[n] ←→ z/(z-1)
3. 指数序列 a^n·u[n] ←→ z/(z-a)
4. 斜坡序列 n·u[n] ←→ z/(z-1)²
5. 正弦序列 sin(ωn)·u[n] ←→ z·sin(ω) / (z² - 2z·cos(ω) + 1)
为什么会这样?你想想看,指数序列 a^n 的Z变换是 z/(z-a),这个形式在极点分析中特别有用。极点 z=a 的位置直接决定了序列的收敛性和稳定性。
3.4 Z变换的收敛域(ROC)——这个坑我踩过
收敛域,说白了就是让Z变换求和收敛的 z 的取值范围。很多同学只记公式,忽略ROC,结果逆变换求出来完全不对。
ROC的三个关键规则:
- 有限长序列:ROC是整个z平面(可能除去0和∞)
- 右边序列:ROC在某个圆外(|z| > R)
- 左边序列:ROC在某个圆内(|z| < R)
重要:同一个X(z)表达式,不同的ROC对应不同的时域序列。比如 X(z)=1/(1-az^{-1}),如果ROC是|z|>|a|,对应右边序列 a^n·u[n];如果ROC是|z|<|a|,对应左边序列 -a^n·u[-n-1]。两者天差地别!
我曾经在分析一个反馈系统时,忽略了ROC的约束,直接用公式求逆变换,结果得到了一个发散的序列。后来检查才发现,系统的极点虽然在单位圆内,但我的ROC选错了方向——嗯,那次debug花了我整整一个下午。
3.5 逆Z变换的求解方法
逆Z变换就是把X(z)变回x[n]。我常用的方法有三种:
方法一:部分分式展开法(最常用)
把X(z)拆成简单分式的和,然后查表。步骤:
- 将X(z)写成有理分式形式
- 进行部分分式展开
- 根据ROC确定每一项对应的时域序列
- 查常用Z变换表,写出结果
示例:求 X(z) = z/(z-0.5)(z-0.8) 的逆变换,ROC: |z|>0.8
展开:X(z)/z = 1/(z-0.5)(z-0.8) = A/(z-0.5) + B/(z-0.8)
解得:A = -10/3, B = 10/3
所以:X(z) = (-10/3)·z/(z-0.5) + (10/3)·z/(z-0.8)
查表得:x[n] = (-10/3)·(0.5)^n·u[n] + (10/3)·(0.8)^n·u[n]
方法二:幂级数展开法(适合数值计算)
把X(z)展开成z^{-1}的幂级数,系数就是x[n]。这个方法在计算机实现中很常用,我写MATLAB代码时经常用它做快速验证。
方法三:留数法(理论分析用)
利用复变函数中的留数定理。公式:x[n] = Σ Res[X(z)·z^{n-1}] 在X(z)的极点处。这个方法理论性强,但手算麻烦,我一般只在推导公式时用。
我的建议:工程实践中,优先用部分分式展开法。如果遇到高阶系统,用MATLAB的residuez函数直接算,省时省力。
3.6 知识体系总览
下面这张图是我自己整理的Z变换知识框架,帮你理清思路:
3.7 小结
Z变换是离散控制系统分析的基石。我个人觉得,掌握Z变换的关键在于三点:
- 理解定义:知道它在做什么——把时域序列映射到复频域
- 记住性质:特别是时移和卷积,这两个在系统分析中天天用
- 重视ROC:没有ROC的Z变换是不完整的,逆变换时一定要确认
下一节我们会用Z变换来分析离散系统的传递函数和稳定性。到时候你会发现,今天学的这些内容,全都会用上。
公众号:蓝海资料掘金营,微信deep3321