Python全面分析系统的时域特性和频率域特性
在不使用matlab的情况下,可以选择用python来实现自动控制理论有关系统打时域分析和频率域分析等,安装的package是python-control,在windows的控制台(cmd)或者linux终端下输入pipinstallcontrol即可,注意,如果同时安装了2.7和3.x(3.4或者3.5或者3.6版本,使用pip命令打时候需要指定版本号,如pip2installcontrol或者pip3.4installcontrol,当然,常用打科学计算用的package也要安装,numpy,scipy,sympy,matplotlib,pandas等。
下面是自己练习时写的代码,写在此作记录和分享用,因为函数语法和matlab相差无几,这里就没有写太多的注释了,有需要打话可以去python-control打官网查看相关文档。
#!/usr/bin/envpython2
#-*-coding:utf-8-*-
"""
CreatedonWedNov1617:48:022016
@author:kindy
"""
fromcontrolimport*
fromscipyimportsignalassgl
frommatplotlibimportpyplotasplt
importnumpyasnp
T=np.mgrid[0:8:0.02]
U1=T
U2=T**2
sys1=tf([1],[0.5,1])#
sys2=tf([2],[1,2,4])#
#StepResponse
defstep_resp():
sout1,stime1=step(sys1)
sout2,stime2=step(sys2)
plt.plot(stime1,sout1,'b',linewidth=0.5)
plt.plot(stime2,sout2,'b',linewidth=0.5)
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.title("StepResopnse",fontsize=12)
#plt.legend()
plt.show()
#ImpulseResponse
defimpulse_resp():
iout1,itime1=impulse(sys1)
iout2,itime2=impulse(sys2)
plt.plot(itime1,iout1,'m',linewidth=0.8)
plt.plot(itime2,iout2,'r',linewidth=0.8)
plt.show()
#impulse_resp()
#任意输入信号的输出,lsim
deflsim_plot():
yout1,Time1,xout1=lsim(sys1,U1,T)
yout2,Time2,xout2=lsim(sys2,U1,T)
plt.plot(Time1,yout1,'b',linewidth=0.7)
plt.plot(Time2,yout2,'b',linewidth=0.7)
plt.show()
#lsim_plot()
#波特图
defbode_plot():
bode(sys1)
bode(sys2)
#bode_plot()
#Nyquist图
defnyquist_plot():
nyquist(sys1)
nyquist(sys2)
#nyquist_plot()
#根轨迹
defroot_locus():
rlocus(sys1)
rlocus(sys2)
root_locus()
下面是运行打一些结果图:
以上这篇Python全面分析系统的时域特性和频率域特性就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。