4. Z变换进阶:从理论到实战
好,咱们继续往下走。前面我们聊了Z变换的基础,说白了就是给离散信号找了个频域里的“身份证”。但光有身份证还不够,你得知道怎么用它来干活。这一章,我带你看看Z变换的几个硬核工具——卷积定理、初值终值定理,还有怎么用它解差分方程。
本章核心脉络: 卷积定理帮我们简化系统分析,初值终值定理能快速判断系统行为,而差分方程求解则是把这些工具串起来,解决实际问题。
4.1 卷积定理:时域卷积,Z域乘积
先说说卷积定理。这玩意儿在信号处理里太常用了。我当年做数字滤波器设计时,每次要算两个序列的卷积,手算能算到怀疑人生。后来发现,用Z变换,直接把卷积变成乘法——舒服多了。
定理内容很简单:
如果 y[n] = x[n] * h[n](*表示卷积),那么 Y(z) = X(z) · H(z)。
反过来也一样:Z域里两个函数相乘,对应时域就是卷积。
我的经验: 做系统分析时,我习惯先把系统脉冲响应h[n]的Z变换H(z)求出来。然后输入信号的Z变换X(z)一乘,反变换回去就是输出。比在时域里一点点卷积快太多了。
举个例子:
已知系统 h[n] = {1, 2, 1}(n=0,1,2)
输入 x[n] = {1, 1}(n=0,1)
求输出 y[n]
时域卷积:y[0]=1, y[1]=3, y[2]=3, y[3]=1
Z域方法:
H(z) = 1 + 2z⁻¹ + z⁻²
X(z) = 1 + z⁻¹
Y(z) = (1 + 2z⁻¹ + z⁻²)(1 + z⁻¹) = 1 + 3z⁻¹ + 3z⁻² + z⁻³
反变换:y[n] = {1, 3, 3, 1} ✓
结果完全一样,但Z域里就是多项式乘法,简单多了。
注意: 卷积定理成立的前提是系统是线性时不变(LTI)的。如果系统是非线性的,这招就不灵了。我曾经在一个自适应滤波项目里踩过这个坑,折腾了两天才发现是系统非线性导致的。
4.2 初值定理与终值定理:快速判断系统行为
这两个定理特别实用。有时候你不需要知道系统的完整响应,只需要知道一开始怎么样、最后稳定到多少。初值定理和终值定理就是干这个的。
初值定理:
如果 x[n] 是因果序列(n<0时x[n]=0),那么:
x[0] = lim(z→∞) X(z)
说白了,就是看Z变换在z趋于无穷大时的极限,就能得到序列的第一个值。
终值定理:
如果 x[n] 收敛(系统稳定),那么:
x[∞] = lim(z→1) (1 - z⁻¹) X(z)
实战场景: 我在调试一个数字电源的PID控制器时,需要快速判断系统在阶跃输入下的稳态误差。用终值定理,算一下(1-z⁻¹)乘以误差的Z变换,再取z→1的极限,几秒钟就知道稳态误差是多少。不用等仿真跑完,也不用解差分方程。
举个例子:
系统传递函数 H(z) = (z + 0.5) / (z - 0.8)
输入为单位阶跃 u[n] → U(z) = z/(z-1)
输出 Y(z) = H(z) · U(z) = (z+0.5)z / [(z-0.8)(z-1)]
用终值定理求稳态输出:
y[∞] = lim(z→1) (1-z⁻¹) · Y(z)
= lim(z→1) (z-1)/z · (z+0.5)z / [(z-0.8)(z-1)]
= lim(z→1) (z+0.5) / (z-0.8)
= (1+0.5)/(1-0.8) = 1.5/0.2 = 7.5
嗯,这里要注意:终值定理要求系统稳定,也就是极点都在单位圆内。如果系统不稳定,算出来的终值没有意义。
4.3 差分方程求解:Z变换的看家本领
差分方程是离散系统的“运动方程”。你想想看,一个数字滤波器、一个数字控制器,本质上都是在解差分方程。Z变换把差分方程变成了代数方程,这才是它的核心价值。
基本步骤:
- 对差分方程两边取Z变换(利用位移定理)
- 代入初始条件
- 解出Y(z)的代数表达式
- 部分分式展开(下一节细说)
- 查表或反变换得到y[n]
看个例子:
差分方程:y[n] - 0.5y[n-1] = x[n]
初始条件:y[-1] = 0
输入:x[n] = δ[n](单位脉冲)
两边取Z变换:
Y(z) - 0.5[z⁻¹Y(z) + y[-1]] = X(z)
代入y[-1]=0,X(z)=1:
Y(z) - 0.5z⁻¹Y(z) = 1
Y(z)(1 - 0.5z⁻¹) = 1
Y(z) = 1 / (1 - 0.5z⁻¹) = z / (z - 0.5)
反变换:y[n] = (0.5)ⁿ · u[n]
我的习惯: 做差分方程求解时,我建议先把系统函数H(z)求出来。这样以后换不同的输入,直接乘H(z)就行,不用每次都从头解方程。就像搭积木一样,H(z)就是那块最核心的积木。
4.4 部分分式展开法:反变换的关键一步
这部分是很多同学的痛点。Z反变换时,Y(z)通常是个有理分式,直接查表查不到。这时候就需要部分分式展开,把它拆成几个简单分式的和。
核心思路: 把复杂分式拆成 z/(z-p₁)、z/(z-p₂) 这种形式,每一项对应一个指数序列。
步骤:
- 先把Y(z)写成
N(z)/D(z)的形式 - 因式分解分母D(z)
- 根据极点类型(单极点、重极点、共轭复极点)选择展开形式
- 求待定系数
- 逐项反变换
看个单极点的例子:
Y(z) = (z² + z) / (z² - 0.5z + 0.06)
先分解分母:
z² - 0.5z + 0.06 = (z - 0.2)(z - 0.3)
展开成部分分式(注意要写成z/(z-p)的形式):
Y(z)/z = (z + 1) / [(z - 0.2)(z - 0.3)]
= A/(z-0.2) + B/(z-0.3)
求系数:
A = (0.2+1)/(0.2-0.3) = 1.2/(-0.1) = -12
B = (0.3+1)/(0.3-0.2) = 1.3/0.1 = 13
所以:
Y(z) = -12z/(z-0.2) + 13z/(z-0.3)
反变换:
y[n] = -12(0.2)ⁿ + 13(0.3)ⁿ, n ≥ 0
避坑指南: 我曾经在展开时忘了检查分子分母的次数。如果分子次数≥分母次数,要先做多项式除法,把真分式部分分离出来。否则展开出来的系数会出错,反变换结果自然不对。这个坑我踩过,后来养成了先检查次数再动手的习惯。
对于重极点的情况,比如分母有 (z-p)²,展开形式要写成:
Y(z)/z = A/(z-p) + B/(z-p)² + ...
反变换时,z/(z-p)² 对应的是 n·pⁿ⁻¹,这个要记住。
总结一下: 卷积定理、初值终值定理、差分方程求解、部分分式展开,这四个工具是Z变换应用的四大支柱。卷积定理简化分析,初值终值定理快速判断,差分方程求解是核心应用,部分分式展开是反变换的关键。把它们串起来,你就能解决绝大多数离散系统的建模与分析问题。
好了,这一章的内容就到这儿。记住,理论是死的,但应用是活的。多动手算几个例子,慢慢就有感觉了。