文章目录
简介
Bode图可用于分析线性时不变系统(LTI系统)的频率响应,由幅频特性图和相频特性图组成。其中
- 幅频特性图 横轴为对数频率,通常以 log 10 ( ω ) \log_{10}(\omega) log10(ω)或 log 10 ( f ) \log_{10}(f) log10(f)表示,其中 ω ( r a d / s ) \omega(rad/s) ω(rad/s)是角频率, f ( H z ) f(Hz) f(Hz)是频率;纵轴为幅值(增益),通常以分贝(dB)为单位。分贝的计算公式为 Gain (dB) = 20 log 10 ∣ H ( j ω ) ∣ \text{Gain (dB)} = 20 \log_{10} |H(j\omega)| Gain (dB)=20log10∣H(jω)∣,其中 ∣ H ( j ω ) ∣ |H(j\omega)| ∣H(jω)∣是系统传递函数的幅值。
- 相频特性图 横轴与幅频特性图相同;纵轴为相位轴,常以度数(°)为单位。相位角 ∠ H ( j ω ) \angle H(j\omega) ∠H(jω)表示系统在频率 ω \omega ω下的输出信号与输入信号之间的相位差。
绘图
对于响应函数为 s 2 + 0.1 s + 7.5 s 4 + 0.12 s 3 + 9 s 2 \frac{s^{2} + 0.1 s + 7.5}{s^{4} + 0.12 s^{3} + 9 s^{2}} s4+0.12s3+9s2s2+0.1s+7.5的系统而言,其Bode图如下
绘图代码为
from sympy.abc import s
from sympy.physics.control.lti import TransferFunction
from sympy.physics.control.control_plots import bode_plot
tf1 = TransferFunction(1*s**2 + 0.1*s + 7.5, 1*s**4 + 0.12*s**3 + 9*s**2, s)
bode_plot(tf1, initial_exp=0.2, final_exp=0.7)
bode_plot函数
【bode_plot】是sympy提供的Bode图绘制函数,其输入的三个参数分别为待绘图的系统,完整定义为
control_plots.bode_plot(
initial_exp=-5,
final_exp=5,
grid=True,
show_axes=False,
show=True,
freq_unit='rad/sec',
phase_unit='rad',
phase_unwrap=True,
**kwargs)
各参数含义为
- system:要绘制Bode图的线性时不变单输入单输出(LTI SISO)系统。
- initial_exp:半对数图的初始10的指数。默认值为-5。
- final_exp:半对数图的最终10的指数。默认值为5。
- show:如果为True,则会显示图;否则,将返回等效的matplotlib图对象。默认值为True。
- prec:点坐标值的小数点精度。默认值为8。
- grid:如果为True,则图中会有网格。默认值为True。
- show_axes:如果为True,则会显示坐标轴。默认值为False。
- freq_unit:可选’rad/sec’(弧度/秒)和’Hz’(赫兹)作为频率单位。
- phase_unit:可选’rad’(弧度)和’deg’(度)作为相位单位。