信号与系统05-复频域分析(拉普拉斯变换与Z变换)
第5课:复频域分析(拉普拉斯变换与Z变换)
课程目标
- 理解复频域分析的核心思想:通过拉普拉斯变换和Z变换将时域问题转化为代数问题
- 掌握连续系统(拉普拉斯变换)和离散系统(Z变换)的复频域建模方法
- 理解系统稳定性与极点位置的关系
- 结合人工智能中的滤波器设计、控制系统优化等实际应用
1. 复频域分析的基本概念
1.1 什么是复频域?
- 复频域是将信号和系统从时域映射到复平面上的分析方法
- 核心思想:将微分/差分方程转化为代数方程
- 适用于线性时不变系统(LTI)的分析
1.2 拉普拉斯变换(连续系统)
-
定义:
F ( s ) = L { f ( t ) } = ∫ 0 ∞ f ( t ) e − s t d t F(s) = \mathcal{L}\{f(t)\} = \int_{0}^{\infty} f(t)e^{-st} dt F(s)=L{f(t)}=∫0∞f(t)e−stdt
其中 s = σ + j ω s = \sigma + j\omega s=σ+jω 是复频率变量 -
逆变换:
f ( t ) = L − 1 { F ( s ) } = 1 2 π j ∫ c − j ∞ c + j ∞ F ( s ) e s t d s f(t) = \mathcal{L}^{-1}\{F(s)\} = \frac{1}{2\pi j} \int_{c-j\infty}^{c+j\infty} F(s)e^{st} ds f(t)=L−1{F(s)}=2πj1∫c−j∞c+j∞F(s)estds -
收敛域:积分收敛的 s 的区域
1.3 Z变换(离散系统)
-
定义:
X ( z ) = Z { x [ n ] } = ∑ n = − ∞ ∞ x [ n ] z − n X(z) = \mathcal{Z}\{x[n]\} = \sum_{n=-\infty}^{\infty} x[n]z^{-n} X(z)=Z{x[n]}=n=−∞∑∞x[n]z−n
其中 z = r e j ω z = re^{j\omega} z=rejω 是复变量 -
单边Z变换(常用于系统分析):
X ( z ) = ∑ n = 0 ∞ x [ n ] z − n X(z) = \sum_{n=0}^{\infty} x[n]z^{-n} X(z)=n=0∑∞x[n]z−n -
收敛域:使级数收敛的 z 的区域
2. 拉普拉斯变换与系统分析
2.1 微分方程的复频域解法
-
步骤:
- 对微分方程两边取拉普拉斯变换
- 转化为代数方程
- 求解代数方程得到响应的象函数
- 取拉普拉斯反变换得到时域解
-
示例:
已知微分方程:
d 2 y ( t ) d t 2 + 3 d y ( t ) d t + 2 y ( t ) = x ( t ) \frac{d^2y(t)}{dt^2} + 3\frac{dy(t)}{dt} + 2y(t) = x(t) dt2d2y(t)+3dtdy(t)+2y(t)=x(t)
初始条件 $ y(0^-) = 1, y’(0^-) = 0 $,输入 $ x(t) = e^{-t}u(t) $拉普拉斯变换:
s 2 Y ( s ) − s y ( 0 − ) − y ′ ( 0 − ) + 3 [ s Y ( s ) − y ( 0 − ) ] + 2 Y ( s ) = 1 s + 1 s^2Y(s) - sy(0^-) - y'(0^-) + 3[sY(s) - y(0^-)] + 2Y(s) = \frac{1}{s+1} s2Y(s)−sy(0−)−y′(0−)+3[sY(s)−y(0−)]+2Y(s)=s+11
代入初始条件并整理:
Y ( s ) = s + 4 ( s + 1 ) 2 ( s + 2 ) Y(s) = \frac{s+4}{(s+1)^2(s+2)} Y(s)=(s+1)2(s+2)s+4
部分分式展开:
Y ( s ) = A s + 1 + B ( s + 1 ) 2 + C s + 2 Y(s) = \frac{A}{s+1} + \frac{B}{(s+1)^2} + \frac{C}{s+2} Y(s)=s+1A+(s+1)2B+s+2C
反变换得到时域解。
2.2 传递函数与系统特性
-
传递函数定义(零初始条件):
H ( s ) = Y ( s ) X ( s ) H(s) = \frac{Y(s)}{X(s)} H(s)=X(s)Y(s) -
系统稳定性:
- 极点全部位于左半平面(Re(s) < 0)
- 零状态响应收敛
-
极零图:
- 极点(分母根)决定系统稳定性
- 零点(分子根)影响频率响应形状
3. Z变换与离散系统分析
3.1 差分方程的复频域解法
-
步骤:
- 对差分方程两边取Z变换
- 转化为代数方程
- 求解代数方程得到响应的象函数
- 取Z反变换得到时域解
-
示例:
差分方程:
y [ n ] − 0.5 y [ n − 1 ] = x [ n ] y[n] - 0.5y[n-1] = x[n] y[n]−0.5y[n−1]=x[n]
初始条件 y [ − 1 ] = 1 y[-1] = 1 y[−1]=1,输入 x [ n ] = u [ n ] x[n] = u[n] x[n]=u[n]Z变换:
Y ( z ) − 0.5 z − 1 Y ( z ) + 0.5 y [ − 1 ] = X ( z ) Y(z) - 0.5z^{-1}Y(z) + 0.5y[-1] = X(z) Y(z)−0.5z−1Y(z)+0.5y[−1]=X(z)
代入初始条件并整理:
Y ( z ) = X ( z ) + 0.5 1 − 0.5 z − 1 Y(z) = \frac{X(z) + 0.5}{1 - 0.5z^{-1}} Y(z)=1−0.5z−1X(z)+0.5
反变换得到时域解。
3.2 离散系统的传递函数
-
传递函数定义:
H ( z ) = Y ( z ) X ( z ) H(z) = \frac{Y(z)}{X(z)} H(z)=X(z)Y(z) -
系统稳定性:
- 极点全部位于单位圆内(|z| < 1)
- 零状态响应收敛
-
极零图:
- 极点(分母根)决定系统稳定性
- 零点(分子根)影响频率响应形状
4. 复频域分析与人工智能的结合
4.1 滤波器设计中的复频域分析
-
传统滤波器设计:
- 巴特沃斯滤波器:极点均匀分布在左半平面
- 切比雪夫滤波器:极点分布在椭圆上
-
AI驱动的滤波器优化:
- 使用遗传算法优化极点位置
- 神经网络自适应调整滤波器参数
from scipy.signal import lti
import numpy as np# 设计一个二阶低通滤波器
num = [1]
den = [1, 2*0.707*1, 1**2]
sys = lti(num, den)# 计算频率响应
w, mag, phase = sys.bode(n=1000)# 绘制频率响应
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.semilogx(w, mag) # 幅频特性
plt.title('Low-pass Filter Frequency Response')
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Magnitude [dB]')
plt.grid(True)
plt.show()
4.2 控制系统中的复频域分析
-
PID控制器设计:
- 通过极点配置实现系统稳定
- Ziegler-Nichols法则调整参数
-
深度学习中的稳定性控制:
- RNN/LSTM中梯度消失/爆炸问题
- 通过复频域分析设计稳定的激活函数
5. Python实践:复频域分析
5.1 拉普拉斯变换与反变换
from sympy import symbols, Function, laplace_transform, inverse_laplace_transform# 定义符号变量
t, s = symbols('t s')
f = Function('f')(t)# 拉普拉斯变换
F = laplace_transform(f, t, s)
print("Laplace Transform:", F)# 逆变换
f_inv = inverse_laplace_transform(F, s, t)
print("Inverse Laplace Transform:", f_inv)
5.2 Z变换与反变换
from sympy import ztrans, inverse_ztransform# 定义符号变量
n, z = symbols('n z')
x = Function('x')(n)# Z变换
X = ztrans(x, n, z)
print("Z Transform:", X)# 逆变换
x_inv = inverse_ztransform(X, z, n)
print("Inverse Z Transform:", x_inv)
5.3 系统稳定性分析
from scipy.signal import TransferFunction# 连续系统稳定性分析
num = [1]
den = [1, 3, 2]
sys = TransferFunction(num, den)
print("Poles of the system:", sys.poles)# 离散系统稳定性分析
num_d = [1]
den_d = [1, -0.5]
sys_d = TransferFunction(num_d, den_d, dt=1)
print("Zeros of the system:", sys_d.zeros)
print("Poles of the system:", sys_d.poles)
6. 参考资料
- 拉普拉斯变换与Z变换的关系
- 复频域分析法在电路中的应用
- Scipy信号处理库文档
- 深度学习中的稳定性控制