python绘制二阶系统的幅频曲线相频曲线
时间: 2024-09-27 13:06:42 浏览: 36
在Python中,我们通常使用matplotlib库和control库来绘制二阶系统(如PID控制器或者简单的第二阶动态系统)的幅频特性(Bode Plot)和相频特性(Phase Plot)。下面是一个简短的步骤概述:
1. 首先,安装必要的库:
```bash
pip install matplotlib control
```
2. 导入所需的模块:
```python
import numpy as np
from scipy.signal import tf2zpk, zpk2ss, bode
import matplotlib.pyplot as plt
```
3. 创建二阶系统的传递函数(一般形式是K / (s^2 + a*s + b),其中K是增益,a和b是极点系数):
```python
K = 10
s = np.roots([1, -2, 1]) # 极点,例如一个二阶系统的极点
H = K / (s[0] * s[1])
```
4. 计算幅频特性(Bode Plot):
```python
w, mag, phase = bode(H)
```
5. 绘制幅频特性图:
```python
plt.figure()
plt.subplot(2, 1, 1)
plt.loglog(w, mag, label='Magnitude')
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Amplitude [dB]')
plt.grid(True)
plt.legend()
plt.subplot(2, 1, 2)
plt.semilogx(w, phase, label='Phase')
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Phase Angle [deg]')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()
```
6. 如果需要绘制相频特性(Phase Plot),可以直接画`phase`数组。
阅读全文