python控制系统仿真库control(一)伯德图.pdfVIP

  • 196
  • 0
  • 约2.85万字
  • 约 15页
  • 2023-12-27 发布于山东
  • 举报

python控制系统仿真库control(一)伯德图.pdf

python控制系统仿真库control(⼀)伯德图

1、安装

我使⽤的是pycharm,因此直接搜索control安装即可。注意,最好已经事先安装了scipy,numpy以及matplotlib这⼏个库以备不时之需。

2、⽂档地址

3、使⽤例⼦

1、创建控制系统:

importcontrolasctrl

sysTf=ctrl.tf([1],[1,2,1])

sysTf为由传递函数定义的系统。但是按照⽂档说明,这个库还⽀持⽤状态空间定义的系统。不过,作为⼀个⾃控的初学者,⽬前只⽤得到

传递函数。

这个传递函数定义了⼀个振荡环节,相当于:

1

2

G(s)=()+2s+1

ωω

nn

很多课本上都有这个环节的伯德图。若要画出这个图,则需要这么做:

importcontrolasctrl

importmatplotlib.pyplotasplt

importnumpyasnp

psiList=[0.05,0.2,0.5,0.707,1.0]

sysTfList=[]

forpsiinpsiList:

sysTfList.append(ctrl.tf([1],[1,2*psi,1]))

mag,phase,omega=ctrl.bode(sysTfList,omega=np.logspace(start=-1,stop=1,num=200),dB=True,deg=False)

plt.show()

当然,图⽚还是有美中不⾜的地⽅:缺少图例。

4、适当修改源码中的⼀些部分

以下是我修改过的freqplot.py,在pycharm中按下ctrl+B追踪control.bode_plot()这个⽅法即可找到这个⽂件。

主要修改是增加了bode()的参数表,⽐原来的代码增加了⼀个legend变量,传⼊⼀个与sysList等长度的字符串列表作为图例的⽂字。

原理是新建了⼀个名为lineList的列表,保存循环中sysList的每⼀项所绘出的线条对象。

⽬前仅修改了margins!=True情况时绘出的图形,因此在伯德图中可以显⽰图例。⽤法如下:

importcontrolasctrl

importmatplotlib.pyplotasplt

importmath

importnumpyasnp

psiList=[0.05,0.2,0.5,0.707,1.0]

sysTfList=[]

forpsiinpsiList:

sysTfList.append(ctrl.tf([1],[1,2*psi,1]))

mag,phase,omega=ctrl.bode(sysTfList,omega=np.logspace(start=-1,stop=1,num=200),dB=True,deg=False,

legends=[0.05,0.2,0.5,0.707,1.0])

plt.show()

——————————————————————————————————————

⽣成的图⽚如下:

以下是源代码:

#freqplot.py-frequencydomainplotsforcontrolsystems

#

#Author:RichardM.Murray

#Date:24May09

#

#Thisfilecontainssomestandardcontrolsystemplots:Bodeplots,

#Nyquistplotsandpole-zerodiagrams.ThecodeforNicholscharts

#isinnichols.py.

#

#Copyright(c)2010byCaliforniaInstituteofTechnology

#Allrightsreserved.

#

#Redistributionanduseinsourceandbinaryforms,withorwithout

#modification,arepermit

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档