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()