python绘制伯德图(Bode图)

简介

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)=20log10H(),其中 ∣ H ( j ω ) ∣ |H(j\omega)| H()是系统传递函数的幅值。
  • 相频特性图 横轴与幅频特性图相同;纵轴为相位轴,常以度数(°)为单位。相位角 ∠ H ( j ω ) \angle H(j\omega) H()表示系统在频率 ω \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’(度)作为相位单位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值