Z变换与零极点分析:数字信号处理的核心工具

📅 2026/7/30 8:35:29
Z变换与零极点分析:数字信号处理的核心工具
1. 从时域到z域为什么我们需要另一个“域”信号与系统这门课学到这里很多同学可能已经有点“域”疲劳了。先是时域然后是傅里叶变换带来的频域现在又冒出来一个z域。这玩意儿到底是干嘛的是不是数学家们为了显得高深而发明的又一套复杂工具作为一个在信号处理领域摸爬滚打多年的工程师我可以负责任地告诉你z变换和z域分析绝不是花架子而是解决一大类实际工程问题的“瑞士军刀”尤其是在数字信号处理和离散时间系统分析中它的地位无可替代。简单来说z变换之于离散时间信号和系统就如同拉普拉斯变换之于连续时间信号和系统。如果你觉得拉普拉斯变换把微分方程变成了代数方程让系统分析变得简单那么z变换就是把差分方程变成了代数方程让离散系统的分析、设计和实现变得清晰可控。我们日常接触的几乎所有数字设备从手机的通话降噪、音乐播放器的均衡器到图像处理软件的各种滤镜其底层算法都离不开z域分析提供的理论框架。不理解z域就很难真正理解一个数字滤波器是如何工作的更谈不上自己去设计和优化它。那么z域到底提供了什么独特的视角核心在于两点收敛域和系统函数。时域信号是一个个孤立的采样点我们很难一眼看出它的特性比如是否稳定、能量如何分布。通过z变换我们将这个序列映射到复平面z域上信号的特性特别是其增长或衰减的趋势、频率成分就变成了复平面上一个区域收敛域和一种函数形式z变换表达式的问题。系统对信号的处理则变成了系统函数与信号z变换的简单乘法。这种从“序列操作”到“复函数运算”的降维打击是z域分析强大威力的根源。接下来我们就一步步拆解看看这把“瑞士军刀”的每个部件到底怎么用。2. z变换的核心定义、收敛域与常见序列变换对要进入z域首先得拿到“门票”——z变换公式。对于一个离散时间序列 x[n]其双边z变换定义为 X(z) ∑_{n-∞}^{∞} x[n] z^{-n} 其中z是一个复变量z re^{jω}。这个求和要能收敛序列 x[n] 乘以 r^{-n} 后的结果必须是绝对可和的。所有使得该级数收敛的z的集合就称为收敛域。注意收敛域是z变换不可分割的一部分离开收敛域谈z变换表达式就像离开定义域谈函数值是没有意义的。同一个z变换表达式搭配不同的收敛域可能对应完全不同的时域序列。为什么收敛域如此重要因为它直接揭示了序列的因果性和稳定性等关键特性。记住几个基本规律右边序列如果序列在 n N 时全为零其收敛域是某个圆的外部即 |z| R_x。特别地因果序列n0时为零的收敛域包含无穷远点。左边序列如果序列在 n N 时全为零其收敛域是某个圆的内部即 |z| R_x。双边序列可以看作一个左边序列和一个右边序列的和其收敛域通常是这两个序列收敛域的交集是一个圆环区域 R_{x-} |z| R_{x}。如果这个环不存在即 R_{x-} R_{x}则z变换不存在。有限长序列收敛域通常是整个z平面可能除了z0或z∞。理解了定义和收敛域我们就能建立一些最常用的z变换对这是后续分析的“工具箱”。下面这个表格是我在工程实践中反复用到的一些核心变换对建议理解并记忆时域序列 x[n]z变换 X(z)收敛域δ[n] 单位脉冲1全部z平面u[n] 单位阶跃z / (z - 1)|z| 1-u[-n-1] 反因果阶跃z / (z - 1)|z| 1a^n u[n] 因果指数z / (z - a)|z| |a|-a^n u[-n-1] 反因果指数z / (z - a)|z| |a|n a^{n-1} u[n]z / (z - a)^2|z| |a|cos(ω₀n) u[n][z(z - cos ω₀)] / [z² - 2z cos ω₀ 1]|z| 1sin(ω₀n) u[n][z sin ω₀] / [z² - 2z cos ω₀ 1]|z| 1这里有一个非常经典的“坑”u[n] 和 -u[-n-1] 的z变换表达式一模一样都是 z/(z-1)区别仅在于收敛域。这完美诠释了“收敛域是z变换一部分”的论断。在实际做题或分析系统时如果只写出表达式而没注明收敛域答案就是不完整的甚至可能是错误的。2.1 收敛域的图形化理解与系统稳定性如何直观理解收敛域我们可以把z写成极坐标形式 z re^{jω}。那么 z^{-n} r^{-n} e^{-jωn}。r^{-n} 扮演了一个“衰减或增长因子”的角色。对于因果序列 a^n u[n]我们需要 r^{-n} 去“压制” a^n 的增长。如果 |a| 1序列衰减那么只要 r |a| r^{-n} 乘以 a^n 的结果就会随着n增大而衰减级数收敛。所以收敛域是 |z| |a|。如果 |a| 1序列增长就需要 r 更大 |a|的衰减因子来压制它收敛域依然是 |z| |a|但这个区域在单位圆外。系统稳定性在z域有一个极其简洁的判据一个线性时不变系统是稳定的当且仅当其系统函数 H(z) 的收敛域包含单位圆|z| 1。为什么因为系统稳定的时域定义是单位脉冲响应绝对可和即 ∑ |h[n]| ∞。在z变换中令 |z| 1即 r 1此时z变换的求和式就变成了 ∑ h[n] e^{-jωn}其存在要求 ∑ |h[n]| ∞这正是稳定性的条件。因此当你拿到一个系统函数 H(z) 时第一件事就是画出它的零极点图然后看单位圆是否在收敛域内。这是z域分析送给我们的第一个大礼。3. 系统函数H(z)离散系统的“DNA”在时域一个线性时不变离散系统完全由它的单位脉冲响应 h[n] 来描述。在z域这个系统则由其系统函数 H(z) 来描述它是 h[n] 的z变换H(z) Z{h[n]}。但H(z)更常见的来源是系统的差分方程。考虑一个通用的N阶线性常系数差分方程 ∑_{k0}^{N} a_k y[n-k] ∑_{r0}^{M} b_r x[n-r] 其中 a_0 1。 我们对等式两边同时取z变换利用z变换的移位性质Z{x[n-k]} z^{-k} X(z)可以得到 (∑_{k0}^{N} a_k z^{-k}) Y(z) (∑_{r0}^{M} b_r z^{-r}) X(z) 于是系统函数为 H(z) Y(z)/X(z) (∑_{r0}^{M} b_r z^{-r}) / (∑_{k0}^{N} a_k z^{-k}) B(z) / A(z)这个形式非常优美。分子多项式 B(z) 的根称为系统的零点分母多项式 A(z) 的根称为系统的极点。零极点在复平面上的分布就像系统的“DNA”决定了该系统几乎所有的特性频率响应、稳定性、瞬态行为、实现结构等。例如一个一阶系统y[n] x[n] 0.8y[n-1]。其差分方程可写为 y[n] - 0.8y[n-1] x[n]。对两边取z变换Y(z) - 0.8z^{-1}Y(z) X(z) H(z) Y(z)/X(z) 1 / (1 - 0.8z^{-1}) z / (z - 0.8)。这个系统有一个极点 z_p 0.8一个零点 z_z 0。因为极点0.8在单位圆内所以系统是稳定的。它的单位脉冲响应 h[n] 0.8^n u[n] 是一个逐渐衰减的指数序列。3.1 零极点图一眼看穿系统特性将H(z)的零极点画在复平面上就是零极点图。这是z域分析中最强大的可视化工具。极点位置决定模态自然响应每个极点 p_i 对应时域中的一个自然模式 p_i^n。如果 |p_i| 1模式衰减|p_i| 1模式增长|p_i| 1模式等幅振荡。稳定性要求所有极点都在单位圆内。零点位置决定“阻塞”频率在零点所在的频率上系统的频率响应为零即该频率的信号无法通过系统。例如在 z 1 (ω0) 处的零点会阻隔直流信号在 z -1 (ωπ) 处的零点会阻隔最高频率信号。几何法估算频率响应频率响应 H(e^{jω}) 就是令 z e^{jω} 代入 H(z)。在零极点图上e^{jω} 是单位圆上的一个点。H(e^{jω}) 的幅度等于所有零点矢量长度之积除以所有极点矢量长度之积再乘以一个常数增益。相位等于所有零点矢量相角之和减去所有极点矢量相角之和。通过观察动点在单位圆上移动时这些矢量的长度和角度变化可以快速定性画出幅频和相频特性曲线。这个方法在滤波器初步设计中非常有用。我曾经在设计一个数字陷波器时就需要滤除一个特定频率的工频干扰。我的思路就是在单位圆上对应干扰频率 ω₀ 的点 e^{jω₀} 处放置一对共轭零点这样该频率的信号增益为零。但只有零点会引入尖锐的陷波也会影响相位为了在陷波频率附近获得更陡峭的衰减且保持相位线性我还在靠近这对零点的单位圆内放置了一对共轭极点。极点的作用是把频率响应在零点附近“拉”下来让陷波更尖锐但同时要确保极点严格在单位圆内以保持稳定。通过零极点图的几何分析我很快确定了极点的合适半径比如0.95再通过计算确定具体系数。这种基于零极点分布的直观设计比直接频域拟合要高效得多。4. z域分析的实战应用系统特性分析与滤波器设计理论说得再多不如实际操练一遍。我们通过一个具体的例子把z域分析的全流程走通。假设我们有一个二阶系统其差分方程为 y[n] x[n] x[n-1] - 0.5y[n-1] 0.25y[n-2]4.1 第一步求系统函数H(z)与零极点对差分方程两边取z变换 Y(z) X(z) z^{-1}X(z) - 0.5z^{-1}Y(z) 0.25z^{-2}Y(z) 将所有包含Y(z)的项移到左边 Y(z) 0.5z^{-1}Y(z) - 0.25z^{-2}Y(z) X(z) z^{-1}X(z) Y(z) (1 0.5z^{-1} - 0.25z^{-2}) X(z) (1 z^{-1}) 因此系统函数为 H(z) Y(z)/X(z) (1 z^{-1}) / (1 0.5z^{-1} - 0.25z^{-2})为了得到零极点将分子分母同时乘以 z²化为z的正幂形式更方便 H(z) (z² * (1 z^{-1})) / (z² * (1 0.5z^{-1} - 0.25z^{-2})) (z² z) / (z² 0.5z - 0.25)现在分子z² z z(z1) 零点为 z_z1 0 z_z2 -1。 分母z² 0.5z - 0.25 0 解得极点 z_p [-0.5 ± sqrt(0.251)] / 2 [-0.5 ± sqrt(1.25)] / 2 ≈ [-0.5 ± 1.118] / 2。所以两个极点为z_p1 ≈ 0.309 z_p2 ≈ -0.809。4.2 第二步确定收敛域与系统稳定性系统函数已经给出但收敛域需要根据系统的因果性等额外条件来确定。通常我们默认系统是因果的物理可实现的系统输出不依赖于未来输入那么收敛域必须是某个圆的外部并且包含无穷远点。观察两个极点z_p1 ≈ 0.309 |z_p1| 1 z_p2 ≈ -0.809 |z_p2| 1。两个极点都在单位圆内。对于因果系统其收敛域是距离原点最远的那个极点所在圆的外部即 |z| max(|z_p1|, |z_p2|) 0.809。这个区域包含了单位圆|z|1。因此该系统是因果且稳定的。如果题目说系统是反因果的那么收敛域就会是 |z| min(|z_p1|, |z_p2|) 0.309这个区域不包含单位圆所以反因果的这个系统是不稳定的。这再次强调了收敛域的重要性。4.3 第三步分析频率响应将 z e^{jω} 代入 H(z) H(e^{jω}) (e^{j2ω} e^{jω}) / (e^{j2ω} 0.5e^{jω} - 0.25)我们可以用几何法定性分析。零点在0和-1对应频率ωπ。极点在0.309和-0.809。当ω从0向π变化时动点e^{jω}在单位圆上逆时针移动。在ω0z1时到零点z0的矢量长度为1到零点z-1的矢量长度为2到两个极点的矢量长度都小于1但具体不同。可以估算出低频增益。在ωπz-1时动点与零点z-1重合该零点矢量长度为0因此幅频响应在ωπ处为零。这是一个典型的高频阻隔特性。在ωπ/2zj时可以大致估算幅度。更精确的做法是用Python或MATLAB快速计算并绘图。这里给出一个简单的Python代码片段作为参考import numpy as np import matplotlib.pyplot as plt from scipy import signal # 定义分子分母系数 (按z^{-1}升幂排列) b [1, 1] # 对应 1 z^{-1} a [1, 0.5, -0.25] # 对应 1 0.5z^{-1} - 0.25z^{-2} # 计算频率响应 w, h signal.freqz(b, a) # 绘图 fig, (ax1, ax2) plt.subplots(2, 1, figsize(10, 8)) ax1.plot(w, 20 * np.log10(abs(h)), b) ax1.set_ylabel(幅度 (dB)) ax1.set_title(系统频率响应) ax1.grid() ax2.plot(w, np.angle(h), g) ax2.set_xlabel(频率 [rad]) ax2.set_ylabel(相位 (rad)) ax2.grid() plt.show()运行这段代码你会看到幅频响应在高频段ω接近π有一个很深的凹陷验证了我们的几何分析。同时观察相频响应在通带内相位变化相对平缓。4.4 第四步求单位脉冲响应h[n]对于因果稳定系统我们可以通过部分分式展开法求逆z变换。H(z) (z² z) / (z² 0.5z - 0.25)。注意分子阶次等于分母阶次需要先化为真分式或者直接对 H(z)/z 展开。H(z) z(z1) / ((z - 0.309)(z 0.809)) 计算部分分式H(z)/z (z1) / ((z - 0.309)(z 0.809)) A/(z-0.309) B/(z0.809) 通过留数法求A和B A (z - 0.309)[H(z)/z] 在 z0.309 处的值 (0.3091)/(0.3090.809) ≈ 1.309/1.118 ≈ 1.171 B (z 0.809)[H(z)/z] 在 z-0.809 处的值 (-0.8091)/(-0.809-0.309) ≈ 0.191/(-1.118) ≈ -0.171 所以H(z) z * [1.171/(z-0.309) - 0.171/(z0.809)] 1.171 * z/(z-0.309) - 0.171 * z/(z0.809)查表可知对于因果系统收敛域|z|0.809z/(z-a) 的逆变换是 a^n u[n]。因此 h[n] [1.171 * (0.309)^n - 0.171 * (-0.809)^n] u[n] 这个h[n]由两个衰减的指数序列叠加而成因为两个极点的模都小于1所以随着n增大h[n]最终会衰减到0这符合稳定系统的特征。5. 从分析到设计z域在数字滤波器设计中的核心作用前面的例子更多是分析一个给定的系统。而z域更大的威力在于设计系统。数字滤波器设计本质上就是在z平面上有策略地摆放零极点以构造出期望的频率响应。5.1 滤波器类型与零极点布局的关联低通滤波器通常将极点放置在单位圆内、靠近正实轴z1附近。极点会吸引频率响应在低频ω≈0产生峰值。为了进一步抑制高频可以在高频段z-1附近放置零点。例如一个一阶低通H(z) (1-a) / (1 - a z^{-1})极点za (0a1)在z1处幅度最大z-1处幅度最小。高通滤波器与低通相反。极点放置在单位圆内、靠近负实轴z-1附近以吸引高频响应。在低频z1放置零点以抑制直流。例如H(z) (1a)/2 * (1 - z^{-1})/(1 a z^{-1})极点z-a零点z1。带通滤波器在单位圆内目标频率点 e^{jω₀} 附近放置一对共轭极点以提升该频带。在低频z1和高频z-1可以放置零点以增加阻带衰减。带阻/陷波滤波器如之前例子在需要抑制的频率点 e^{jω₀} 处放置一对共轭零点。为了陷波尖锐可以在靠近零点的单位圆内放置一对共轭极点。全通滤波器用于调整相位而不改变幅度。其零极点以单位圆为镜像对称如果有一个极点 z_p re^{jθ} (r1)则必有一个零点 z_z (1/r)e^{jθ}。这样在单位圆上任何一点到零点和极点的矢量长度之比恒为1/r * r 1因此幅度响应恒为常数。5.2 设计实例一个简单的数字低通滤波器假设我们要设计一个截止频率 ω_c π/4 的简单低通滤波器。我们可以采用一个一阶系统极点放在正实轴。为了在ωπ处有更好的抑制我们增加一个在z-1处的零点。目标极点 p a (实数0a1)零点 z -1。 系统函数形式H(z) K * (z 1) / (z - a) K * (1 z^{-1}) / (1 - a z^{-1})其中K是增益常数。确定参数a和K确定a对于一阶系统极点a决定了带宽。粗略经验是-3dB截止频率 ω_c 满足 a e^{-ω_c} 或类似关系。更准确的方法是要求 |H(e^{jω_c})|^2 0.5。我们代入计算 |H(e^{jω})|^2 |K|^2 * |1 e^{-jω}|^2 / |1 - a e^{-jω}|^2 |K|^2 * [2 2cosω] / [1 a^2 - 2a cosω] 令 ω_c π/4 cos(π/4)√2/2≈0.707。设 |H(e^{jω_c})|^2 0.5并先假设K1后续调整有 0.5 [2 20.707] / [1 a^2 - 2a0.707] 3.414 / (1 a^2 - 1.414a) 解得1 a^2 - 1.414a 3.414 / 0.5 6.828 a^2 - 1.414a -5.828 0。 解这个二次方程取0a1的根a ≈ 0.32。这就是我们需要的极点位置。确定K通常我们希望在通带中心ω0即直流有单位增益即 |H(e^{j0})| 1。 H(e^{j0}) K * (11)/(1 - a) K * 2 / (1 - a) 令其幅度等于1|K * 2/(1-a)| 1 K (1-a)/2 (1-0.32)/2 0.34。 所以最终的系统函数为H(z) 0.34 * (1 z^{-1}) / (1 - 0.32 z^{-1})这个滤波器非常简单性能也有限过渡带不陡但它清晰地展示了从性能指标截止频率、直流增益到零极点位置再到系统函数系数的完整设计链路。在实际工程中我们会使用更成熟的方法如双线性变换法、窗函数法来设计性能更好的滤波器但这些方法的背后依然是z域和零极点在起作用。6. 逆z变换从z域回归时域的三种武器分析系统最终往往需要得到时域的响应这就需要进行逆z变换。常用的方法有三种各有适用场景。6.1 留数法围线积分法这是最根本、最通用的方法基于复变函数理论。公式是x[n] (1/2πj) ∮_C X(z) z^{n-1} dz其中C是收敛域内的一条逆时针闭合围线。计算这个积分需要用到柯西留数定理。优点理论完备对所有情况都适用。缺点计算复杂尤其是高阶极点时。实用场景当其他方法失效或需要理论验证时使用。在实际工程计算中除非是简单的极点否则很少手动计算。6.2 幂级数展开法长除法根据z变换的定义式 X(z) ∑ x[n] z^{-n}如果我们能把X(z)展开成关于 z^{-1} 的幂级数那么级数的系数就是 x[n]。操作方法将X(z)的分子分母多项式按z^{-1}的降幂或升幂排列然后进行多项式长除法。优点直接可以一次得到序列的前若干项适合求有限项或右边序列的开头几项。缺点难以得到闭合形式的通项公式对于左边序列需要按z的正幂排列进行长除。示例X(z) 1 / (1 - az^{-1}), |z| |a| (因果序列)。按z^{-1}降幂排列直接长除1 ÷ (1 - az^{-1}) 1 az^{-1} a^2z^{-2} a^3z^{-3} ...。所以 x[n] a^n u[n]。6.3 部分分式展开法最常用这是工程中最主流、最有效的方法适用于X(z)是有理分式的情况。核心思想是将复杂的X(z)分解成多个简单分式之和而这些简单分式的逆变换是已知的。标准步骤将X(z)表示为关于z^{-1}的真分式分子阶次不高于分母。如果不是先化为真分式加一个多项式。更常见且方便的做法是对X(z)/z进行部分分式展开。因为常见变换对如 z/(z-a) 的形式其对应的X(z)/z 是 1/(z-a) 的形式展开更规整。将X(z)/z展开为 A1/(z-p1) A2/(z-p2) ... 的形式其中p_i是极点。等式两边乘以z得到 X(z) A1 * z/(z-p1) A2 * z/(z-p2) ...根据收敛域确定每一项对应的是因果序列 (|z||p_i|) 还是反因果序列 (|z||p_i|)然后查表得到逆变换。优点能直接得到闭合形式的通项表达式计算系统化。难点极点有重根或共轭复根时展开形式稍有不同。对于共轭复极点通常将其配对得到实系数的二阶项对应时域的衰减正弦序列。在实际项目中我几乎总是首选部分分式展开法。它清晰、直接并且大多数数学软件如MATLAB的residue函数或Python SciPy的residue都能直接完成计算我们只需要正确解读结果并对应到时域序列即可。7. z域中的系统连接与框图实现在时域系统有串联、并联和反馈连接。在z域这些连接有更简单的对应关系。串联H(z) H1(z) * H2(z)。整体系统函数等于子系统函数的乘积。并联H(z) H1(z) H2(z)。整体系统函数等于子系统函数的和。反馈连接这是构成复杂系统如滤波器、控制系统的基础。经典负反馈结构如图前向通路为G(z)反馈通路为H(z)则闭环系统函数为 T(z) G(z) / [1 G(z)H(z)]。得到系统函数H(z)后我们可以用不同的结构来实现它即画出其信号流图或框图。常见结构有直接型直接根据差分方程或H(z)的系数画图。结构简单但对系数误差敏感。级联型将H(z)分解为一阶或二阶节的乘积每个节用直接型实现然后串联。零极点可配对调整灵活是最常用的结构之一。并联型将H(z)分解为部分分式之和每个一阶或二阶项并联实现。运算误差较小。转置型由直接型通过流图转置规则得到具有相似的特性。选择哪种结构取决于对计算复杂度、存储量、以及对系数量化误差的敏感度要求。例如在定点DSP芯片上实现滤波器时并联型和级联型通常比直接型有更好的数值稳定性。z域分析为我们提供了一套强大而统一的工具将离散时间系统的描述、分析、设计和实现全部纳入复平面的框架之下。从理解一个系统的稳定性到设计一个满足特定频率需求的滤波器再到用硬件或软件实现它每一步都离不开对z变换、零极点、收敛域和系统函数的深刻理解。掌握它你就掌握了打开数字信号处理世界大门的钥匙。