—— 用“复平面地图”预测系统的未来行为
一、黑箱实验:预测回声系统的秘密
想象一个山洞,你大喊一声,听到多次回声逐渐衰减。这个系统如何用数学描述?Z变换就像一张地图,能预测每个输入信号会如何被系统改变(放大、衰减或共振)。
核心思想:Z变换将离散时间信号从时域转换到复频域,揭示系统的频率响应特性。
二、从傅里叶变换到Z变换
1. 傅里叶变换的局限性
傅里叶变换要求信号绝对可和(∑∣x[n]∣<∞\sum |x[n]| < \infty∑∣x[n]∣<∞),无法处理无限增长的信号(如爆炸式震荡)。
2. Z变换的定义
对离散信号 x[n]x[n]x[n] 进行Z变换:
X(z)=∑n=−∞∞x[n]z−n X(z) = \sum_{n=-\infty}^{\infty} x[n] z^{-n} X(z)=n=−∞∑∞x[n]z−n
- zzz:复变量,z=rejωz = re^{j\omega}z=rejω(极坐标形式)
- 当 r=1r=1r=1(即 z=ejωz = e^{j\omega}z=ejω )时,Z变换退化为傅里叶变换
三、系统函数:用Z变换描述滤波器
1. 差分方程的一般形式
线性时不变系统(LTI)可用差分方程描述:
y[n]=∑k=0Mbkx[n−k]−∑k=1Naky[n−k] y[n] = \sum_{k=0}^{M} b_k x[n-k] - \sum_{k=1}^{N} a_k y[n-k] y[n]=k=0∑Mbkx[n−k]−k=1∑Naky[n−k]
- x[n]x[n]x[n]:输入信号
- y[n]y[n]y[n]:输出信号
2. 系统函数(传递函数)
对差分方程两边取Z变换,得到系统函数:
H(z)=Y(z)X(z)=∑k=0Mbkz−k1+∑k=1Nakz−k H(z) = \frac{Y(z)}{X(z)} = \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} H(z)=X(z)Y(z)=1+∑k=1Nakz−k∑k=0Mbkz−k
四、Python实战:绘制零极点图与频率响应
场景:分析一阶递归系统 y[n]=x[n]+0.8y[n−1]y[n] = x[n] + 0.8y[n-1]y[n]=x[n]+0.8y[n−1]
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import tf2zpk, freqz
# 定义系统系数
b = [1.0] # 分子系数 (x[n]项)
a = [1, -0.8] # 分母系数 (y[n-1]项) → 方程: y[n] - 0.8y[n-1] = x[n]
# 计算零极点
zeros, poles, _ = tf2zpk(b, a)
# 绘制零极点图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(6, 6))
theta = np.linspace(0, 2*np.pi, 100)
plt.plot(np.cos(theta), np.sin(theta), 'k--') # 单位圆
plt.plot(zeros.real, zeros.imag, 'bo', label='零点') # 零点 (无)
plt.plot(poles.real, poles.imag, 'rx', markersize=10, label='极点 (0.8)')
plt.xlabel("实部")
plt.ylabel("虚部")
plt.title("零极点分布")
plt.axis('equal')
plt.legend(loc='upper right')
# 计算频率响应
w, h = freqz(b, a)
plt.figure(figsize=(10, 4))
plt.plot(w, 20 * np.log10(np.abs(h)), 'b')
plt.xlabel('频率 [rad/sample]')
plt.ylabel('增益 (dB)')
plt.title("频率响应")
plt.show()
运行结果:
- 零极点图:极点在0.8(单位圆内)→ 系统稳定
- 频率响应:低频分量通过,高频衰减 → 低通滤波器特性
五、关键概念解析
1. 零极点的物理意义
- 零点:使 H(z)=0H(z)=0H(z)=0 的z值 → 抑制对应频率
- 极点:使 H(z)→∞H(z) \rightarrow \inftyH(z)→∞ 的z值 → 增强对应频率
2. 稳定性判据
- 所有极点位于单位圆内 (∣z∣<1|z| < 1∣z∣<1) → 系统稳定
- 若极点在单位圆外 → 输出无限增长(如麦克风啸叫)
六、应用实例
- 地震监测:用极点分析地层共振频率
- 音频均衡器:通过调整零极点位置增强/减弱特定频段
- 雷达系统:Z变换设计匹配滤波器,优化目标检测
七、常见误区
- “Z变换只是傅里叶变换的替代?”
- 错误!Z变换能分析不稳定系统(如爆炸信号),傅里叶变换无法处理。
- “零极点越多越好?”
- 不一定!过多零极点会导致计算复杂度增加,且可能引入数值不稳定。
动手实验:
修改代码中的极点位置(如将0.8改为1.1),观察频率响应如何变化?系统是否稳定?