控制系統/開源工具/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)
