逆Z变换:三种实用方法

逆Z变换,说白了就是把Z域的函数变回时域的序列。这步搞不定,后面的稳定性分析全是空中楼阁。我个人习惯把这三种方法——部分分式展开、幂级数展开、留数法——当成工具箱里的三把扳手,各有各的适用场景。

一、部分分式展开法

这是我最常用的方法。为什么?因为它直观,而且跟拉普拉斯变换那套思路一脉相承。你想想看,我们先把复杂的Z域函数拆成几个简单分式之和,然后查表就能得到时域序列。

具体步骤其实就三步:

  1. 因式分解分母:把分母多项式拆成一次因式的乘积
  2. 确定展开形式:根据极点类型(单极点、重极点)写出待定系数形式
  3. 求解系数:用留数法或比较系数法求出每个分式的系数

举个例子,假设我们有:

X(z) = (z² + 2z + 1) / (z² - 0.5z + 0.06)

先做因式分解:分母 = (z - 0.2)(z - 0.3)

然后展开成:

X(z) = A/(z - 0.2) + B/(z - 0.3)

解出A和B,再查表得到x[n] = A·(0.2)ⁿ·u[n] + B·(0.3)ⁿ·u[n]。

我的小技巧:如果分子次数≥分母次数,先做多项式除法,把真分式部分分离出来。我在项目中遇到过几次因为没做这步,结果查表查错了的情况。

二、幂级数展开法(长除法)

这个方法说白了就是做多项式除法。把X(z)写成分子分母多项式,然后直接除,得到z的负幂级数。系数就是时域序列。

为什么要用这个方法?

  • 当你想快速得到前几项序列值时,这招特别快
  • 不需要查表,不需要求极点
  • 适合计算机实现,算法简单

但要注意:

我曾经踩过的坑:长除法只能得到有限项,无法得到闭式表达式。如果你需要知道序列的完整形式,比如要分析稳定性,那还得用部分分式法或留数法。

操作步骤:

  1. 把X(z)写成分子/分母形式,都按z的降幂排列
  2. 做多项式除法,得到z⁻¹、z⁻²、z⁻³...的系数
  3. 这些系数就是x[0]、x[1]、x[2]...

举个例子:

X(z) = 1 / (1 - 0.5z⁻¹)

做除法:
1 ÷ (1 - 0.5z⁻¹) = 1 + 0.5z⁻¹ + 0.25z⁻² + 0.125z⁻³ + ...

所以 x[0]=1, x[1]=0.5, x[2]=0.25, x[3]=0.125, ...

三、留数法

这个方法数学味道最浓,但也是最通用的。它基于复变函数中的留数定理,直接计算围线积分。

公式长这样:

x[n] = (1/2πj) ∮ X(z)·zⁿ⁻¹ dz = Σ [Residues of X(z)·zⁿ⁻¹ at poles]

嗯,看着吓人,但用起来其实有套路:

  • 单极点:Res = (z - p)·X(z)·zⁿ⁻¹ 在z=p处的值
  • m重极点:Res = 1/(m-1)! · d^(m-1)/dz^(m-1) [(z-p)^m · X(z)·zⁿ⁻¹] 在z=p处的值
我个人的经验:留数法适合处理复杂极点的情况,比如重极点。但计算量较大,容易出错。我一般只在部分分式法不好使时才用它。

三种方法对比

方法 优点 缺点 适用场景
部分分式展开 直观、可得到闭式解 需要因式分解 极点较少、阶次不高
幂级数展开 简单、适合计算机 只能得到有限项 求前几项、数值计算
留数法 通用、可处理重极点 计算复杂、易出错 理论分析、复杂极点

知识体系结构图

下面这张图帮你理清三种方法的关系和选择逻辑:

逆Z变换 部分分式展开法 幂级数展开法 留数法 特点 • 直观,可得到闭式解 • 需要因式分解 • 适合极点较少的情况 • 查表即可得到结果 特点 • 算法简单,适合计算机 • 只能得到有限项 • 无法得到闭式表达式 • 适合求前几项序列值 特点 • 通用性强 • 可处理重极点 • 计算复杂,易出错 • 适合理论分析

实际应用中的选择建议

这三种方法没有绝对的好坏。我个人的习惯是:

  • 如果系统阶次≤3,优先用部分分式展开法
  • 如果只需要前几个采样点的值做快速验证,用幂级数展开法
  • 如果遇到重极点或者需要严谨的数学推导,用留数法
避坑指南:我曾经在一个项目中,用长除法算出了前10项序列值,觉得没问题就直接用了。结果后来发现系统不稳定,因为长除法只给出了有限信息,我完全没注意到极点位置。所以记住:长除法只能帮你看到局部,看不到全局。

好了,逆Z变换的三种方法就讲到这里。每种方法都有它的脾气,多练几次就能找到感觉。下一节我们会用这些工具来分析系统的稳定性,到时候你就知道为什么这部分这么重要了。


公众号:蓝海资料掘金营,微信deep3321