Matlab和Python实现系统函数的零极点图和频率响应绘制

作者:半吊子全栈工匠2024.01.18 12:23浏览量:12

简介:介绍如何使用Matlab和Python绘制系统函数的零极点图和频率响应。通过对比两种语言的实现方法,展示各自的优缺点。

在控制理论和信号处理中,系统函数的零极点图和频率响应是非常重要的概念。通过这些图,我们可以深入了解系统的稳定性和性能。下面分别介绍使用Matlab和Python绘制这些图的方法。
Matlab实现
在Matlab中,我们可以使用tf函数创建传递函数模型,然后使用zplane函数获取零点,pplane函数获取极点,bode函数获取频率响应。

  1. % 创建传递函数
  2. num = [1 2]; % 分子
  3. den = [1 3 2]; % 分母
  4. sys = tf(num, den);
  5. % 绘制零点图
  6. z = zplane(sys);
  7. % 绘制极点图
  8. p = pplane(sys);
  9. % 绘制幅频特性和相频特性
  10. bode(sys);

Python实现
在Python中,我们可以使用scipy库中的signal模块进行系统函数的零极点图和频率响应的绘制。
首先,安装必要的库:

  1. pip install numpy scipy matplotlib

然后,使用以下代码进行绘制:

  1. import numpy as np
  2. import scipy.signal as signal
  3. import matplotlib.pyplot as plt
  4. # 定义传递函数分子和分母系数
  5. num = np.array([1, 2])
  6. den = np.array([1, 3, 2])
  7. # 创建传递函数模型
  8. sys = signal.TransferFunction(num, den)
  9. # 绘制零点图和极点图
  10. plt.figure()
  11. plt.title('Zero-Pole Plot')
  12. signal.plot_zero_pole_response(sys)
  13. plt.xlabel('Frequency (rad/s)')
  14. plt.ylabel('Amplitude')
  15. plt.grid(True)
  16. plt.show()