Z变换详细介绍

Z变换是一种强有力的数学工具,用于分析和设计离散时间信号和系统。它是傅里叶变换和拉普拉斯变换在离散时间域的推广,广泛应用于数字信号处理、控制系统等领域。

定义

离散时间信号 x n xn xn的Z变换定义为:
X ( z ) = ∑ n = − ∞ ∞ x n ⋅ z − n X(z) = \sum_{n=-\infty}^{\infty} xn \cdot z^{-n} X(z)=n=−∞∑∞xn⋅z−n

其中, z z z是一个复数, z = r e j ω z = re^{j\omega} z=rejω, r r r是幅度, ω \omega ω是相角。

Z变换的基本性质

  1. 线性性 :

    若 x 1 n x_1n x1n和 x 2 n x_2n x2n的Z变换分别为 X 1 ( z ) X_1(z) X1(z)和 X 2 ( z ) X_2(z) X2(z),则
    a 1 x 1 n + a 2 x 2 n → a 1 X 1 ( z ) + a 2 X 2 ( z ) a_1 x_1n + a_2 x_2n \rightarrow a_1 X_1(z) + a_2 X_2(z) a1x1n+a2x2n→a1X1(z)+a2X2(z)

  2. 时间平移 :

    若 x n xn xn的Z变换为 X ( z ) X(z) X(z),则
    x n − k → z − k X ( z ) xn - k \rightarrow z^{-k} X(z) xn−k→z−kX(z)

  3. 卷积 :

    若 x 1 n x_1n x1n和 x 2 n x_2n x2n的Z变换分别为 X 1 ( z ) X_1(z) X1(z)和 X 2 ( z ) X_2(z) X2(z),则卷积
    y n = x 1 n ∗ x 2 n → Y ( z ) = X 1 ( z ) ⋅ X 2 ( z ) yn = x_1n * x_2n \rightarrow Y(z) = X_1(z) \cdot X_2(z) yn=x1n∗x2n→Y(z)=X1(z)⋅X2(z)

  4. 初值定理 :
    x 0 = lim ⁡ z → ∞ X ( z ) x0 = \lim_{z \to \infty} X(z) x0=z→∞limX(z)

  5. 终值定理 :
    lim ⁡ n → ∞ x n = lim ⁡ z → 1 ( z − 1 ) X ( z ) \lim_{n \to \infty} xn = \lim_{z \to 1} (z - 1) X(z) n→∞limxn=z→1lim(z−1)X(z)

逆Z变换

逆Z变换用于将频域信号转换回时域信号,定义为:
x n = 1 2 π j ∮ C X ( z ) z n − 1 d z xn = \frac{1}{2\pi j} \oint_{C} X(z) z^{n-1} dz xn=2πj1∮CX(z)zn−1dz

其中,积分路径 C C C是一个包含所有 X ( z ) X(z) X(z)极点的闭合路径。

常用的方法包括:

  1. 部分分式展开法 :将 X ( z ) X(z) X(z)展开成部分分式,再将每个部分分式逆变换。
  2. 幂级数展开法 :将 X ( z ) X(z) X(z)展开成幂级数,再根据定义求逆变换。
  3. 查表法:利用Z变换对照表进行逆变换。

稳定性和因果性

  • 稳定性 :系统的Z变换 H ( z ) H(z) H(z)在单位圆内绝对收敛。
  • 因果性 :系统的Z变换 H ( z ) H(z) H(z)具有所有极点在单位圆内。

Z变换的应用

  1. 差分方程求解 :

    通过Z变换,将差分方程转换为代数方程,求解后再通过逆Z变换得到时域解。

  2. 系统分析 :

    分析系统的稳定性、频率响应等。

  3. 滤波器设计 :

    设计数字滤波器,满足特定频率特性。

代码示例

以下是使用Python和scipy库进行Z变换和逆Z变换的示例:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import residue, freqz

# 定义差分方程系数
b = [1, -0.5]  # 分子系数
a = [1, -1.5, 0.7]  # 分母系数

# 计算系统的频率响应
w, h = freqz(b, a)

# 绘制频率响应
plt.figure()
plt.plot(w, 20 * np.log10(abs(h)))
plt.title('Frequency response')
plt.xlabel('Frequency [rad/sample]')
plt.ylabel('Amplitude [dB]')
plt.grid()
plt.show()

# 部分分式展开
r, p, k = residue(b, a)
print("Residues:", r)
print("Poles:", p)
print("Direct term:", k)

# 使用逆Z变换求解时域响应(部分分式展开法)
n = np.arange(0, 20)
h = np.zeros_like(n, dtype=np.float64)
for i in range(len(r)):
    h += r[i] * p[i]**n

plt.figure()
plt.stem(n, h, use_line_collection=True)
plt.title('Impulse response')
plt.xlabel('n')
plt.ylabel('h[n]')
plt.grid()
plt.show()

在这个示例中,定义了一个差分方程,通过Z变换分析其频率响应,并通过部分分式展开法计算时域响应。

相关推荐
_wyt0014 天前
洛谷P17461 [GESP202609 八级] 生成树计数 题解
c++·数学·树·gesp·八级·仙人掌
熊猫_豆豆5 天前
载人飞行器绕飞—合拢相对动力学建模报告
数学·物理·宇宙飞船·对接交会
Luhui Dev6 天前
给教研 Agent 接上大角几何生图 API:从一道题到可编辑题图
人工智能·数学·agent·luhuidev
MoRanzhi12036 天前
122.四平方和(暴力枚举)
python·数学·算法·蓝桥杯·完全平方数·暴力枚举·四平方和定理
闻缺陷则喜何志丹6 天前
【计算几何 排样】libnest2d的放置器
数学·计算几何·libnest2d·放置器·npf·最左最下
hans7748829687 天前
仅根据BMI反推身高和体重?还真能做到!只需要简单的数论知识~
python·数学
Ro Jace7 天前
数学领域全景框架图
数学
Tisfy7 天前
LeetCode 3723.数位平方和的最大值:构造
数学·算法·leetcode·字符串·题解
Tisfy8 天前
LeetCode 2333.最小差值平方和:排序 + 数学计算(不用二分)
数学·算法·leetcode·题解·贪心·排序
fxss9 天前
宝宝学识屋上新|用喜欢的小动物,玩懂数数、加法和减法
数学