控制系统/开源工具/Julia
外观
< 控制系统
您需要安装 Julia,然后安装 ControlSystems.jl 包。建议您遵循官方 Julia 文档。Julia 可以用终端执行,但使用 Juno/Atom 或 Visual Studio Code 等 IDE 更加方便。
ControlSystems.jl 包需要使用以下命令加载
using ControlSystems
在执行函数之前。
在本课程中,假定源代码是在 Julia REPL 中键入的,以便立即打印结果。否则,可以使用以下命令打印结果:
print()
考虑以下传递函数
传递函数的创建类似于其他数值工具箱,使用分子和分母作为
num = [1, 2] # Numerator den = [3, 4, 5] # Denominator G = tf(num, den) # Transfer function
REPL 响应创建的传递函数对象的概述
TransferFunction{ControlSystems.SisoRational{Int64}} s + 2 --------------- 3*s^2 + 4*s + 5 Continuous-time transfer function model
传递函数 的极点使用以下命令计算
pole(G)
REPL 响应
2-element Array{Complex{Float64},1}: -0.6666666666666665 + 1.1055415967851332im -0.6666666666666665 - 1.1055415967851332im
传递函数 的零点使用以下命令计算
tzero(G)
得到
1-element Array{Float64,1}: -2.0
函数
zpkdata(G)
将返回零点、极点和增益。
极点-零点图使用以下命令创建
pzmap(G)
定义模拟时间和两个图表的标签非常方便
Tf = 20 # Final simulation time in seconds impulse_lbl = "y(t) = g(t)" # Label for impulse response g(t) step_lbl = "y(t) = h(t)" # Label for step response h(t)
脉冲响应使用以下命令创建
impulseplot(G, Tf, label=impulse_lbl) # Impulse response
阶跃响应使用以下命令构建
stepplot(G, Tf, label=impulse_lbl) # Step response
伯德图使用以下命令打印
bodeplot(G) # Bode plot
奈奎斯特图(没有增益圆)使用以下命令打印
nyquistplot(G, gaincircles=false) # Nyquist plot
可以使用布尔标志切换增益圆。
注意
如果只需要伯德图/奈奎斯特图的数值结果,而不需要可视化,则可以使用
bode(G)
和
nyquist(G)