二阶系统不同参数的响应(Python)

python计算系统的阶跃响应和脉冲响应
在这里插入图片描述

from scipy.signal import lti,step2,impulse2
import matplotlib.pyplot as plt

f,((ax1,ax2,ax3),(ax4,ax5,ax6),(ax7,ax8,ax9),(ax10,ax11,ax12)) = plt.subplots(4,3,sharex='col',sharey='row') # 开启subplots模式
for i in range(1,13,1):
    exec("s%s=lti([%d],[1,2,5])"%(i,i))
    exec("t%s,y%s=step2(s%s)"%(i,i,i))
    exec("ax%s.plot(t%s,y%s,'r',label='s%s Step Response',linewidth=0.5)"%(i,i,i,i))
    print (i)
plt.show()
$$
G(s)={4\over s^3+2s^2+10s+8}
$$

G ( s ) = 4 s 3 + 2 s 2 + 10 s + 8 G(s)={4\over s^3+2s^2+10s+8} G(s)=s3+2s2+10s+84

import numpy as np
import control as ctl
import matplotlib.pyplot as plt

def step_plot(s):
    t,y=ctl.step_response(s)
    plt.plot(t,y,'b',linewidth=0.6)
    plt.title('Step Response',fontsize=9)
    plt.xlabel('Time(seconds)',fontsize=9)
    plt.ylabel('Amplitude',fontsize=9)
    plt.show()

def impulse_plot(s):
    t,y=ctl.impulse_response(s)
    plt.plot(t,y,'b',linewidth=0.6)
    plt.title('Impulse Response',fontsize=9)
    plt.xlabel('Time(seconds)',fontsize=9)
    plt.ylabel('Amplitude',fontsize=9)
    plt.show()


s=ctl.tf([4],[1,2,10,8])
step_plot(s)

在这里插入图片描述在这里插入图片描述
`
伯德图绘制(幅频曲线magnitude和相频曲线phase)

from scipy import signal
import matplotlib.pyplot as plt

s1 = signal.lti([2.557e-9,1], [4.999e-15,1.268e-8, 1])
w, mag, phase = s1.bode()
print(w)
plt.figure()
plt.semilogx(w, mag)    # Bode magnitude plot
plt.figure()
plt.semilogx(w, phase)  # Bode phase plot
plt.show()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值