Функции построения графиков
|
Для построения любых графиков пользователю необходимо вручную загрузить библиотеку Plots.jl, например, путем вызова |
#
ControlSystemsBase.bodeplot — Function
fig = bodeplot(sys, args...)
bodeplot(LTISystem[sys1, sys2...], args...; plotphase=true, balance = true, kwargs...)
Создает график Боде для систем LTISystem. Можно предоставить вектор частот w, если это необходимо. Сведения о том, как изменить шкалу амплитуды, см. в описании метода setPlotScale. Шкала амплитуды по умолчанию — log10 (абсолютная шкала). - Если hz=true, по оси x графика откладываются герцы, но входной вектор частот по-прежнему интерпретируется как выраженный в рад/с.
-
balance: перед построением графика применительно к системе вызывается функцияbalance_statespace.
Аргументы kwargs передаются в качестве аргумента в RecipesBase.plot.
#
ControlSystemsBase.gangoffourplot — Method
fig = gangoffourplot(P::LTISystem, C::LTISystem; minimal=true, plotphase=false, Ms_lines = [1.0, 1.25, 1.5], Mt_lines = [], sigma = true, kwargs...)
График четырех основных параметров.
#
ControlSystemsBase.marginplot — Function
fig = marginplot(sys::LTISystem [,w::AbstractVector]; balance=true, kwargs...)
marginplot(sys::Vector{LTISystem}, w::AbstractVector; balance=true, kwargs...)
Строит график всех запасов устойчивости по амплитуде и фазе для систем sys.
-
При необходимости можно предоставить вектор частот
w. -
balance: перед построением графика применительно к системе вызывается функцияbalance_statespace.
Аргументы kwargs передаются в качестве аргумента в RecipesBase.plot.
#
ControlSystemsBase.nicholsplot — Function
fig = nicholsplot{T<:LTISystem}(systems::Vector{T}, w::AbstractVector; kwargs...)
Создает график Никольса для систем LTISystem. Можно предоставить вектор частот w, если это необходимо.
Именованные аргументы:
text = true Gains = [12, 6, 3, 1, 0.5, -0.5, -1, -3, -6, -10, -20, -40, -60] pInc = 30 sat = 0.4 val = 0.85 fontsize = 10
pInc определяет приращение в градусах между линиями фаз.
sat ∈ [0,1] определяет насыщенность линий коэффициентов усиления.
val ∈ [0,1] определяет яркость линий коэффициентов усиления.
В функцию, строящую графики систем, передаются дополнительные именованные аргументы, с помощью которых можно указывать цвета, начертание линий и т. д. с использованием обычного синтаксиса RecipesBase.jl.
Данная функция основана на коде, который распространяется по лицензии BSD из двух пунктов: © Will Robertson, 2011 г. © Philipp Allgeuer, 2011 г.
#
ControlSystemsBase.nyquistplot — Function
fig = nyquistplot(sys; Ms_circles=Float64[], Mt_circles=Float64[], unit_circle=false, hz=false, critical_point=-1, kwargs...)
nyquistplot(LTISystem[sys1, sys2...]; Ms_circles=Float64[], Mt_circles=Float64[], unit_circle=false, hz=false, critical_point=-1, kwargs...)
Создает график Найквиста для систем LTISystem. Можно предоставить вектор частот w, если это необходимо.
-
unit_circle: должна ли отображаться единичная окружность. Кривая Найквиста пересекает единичную окружность в точке, соответствующей частоте единичного усиления. -
Ms_circles: рисует окружности, соответствующие данным уровням чувствительности (окружность вокруг --1 радиусом1/Ms).Ms_circlesможно задать в виде числа или вектора чисел. Схема за пределами этой окружности имеет запас устойчивости по фазе не менее2asin(1/(2Ms))рад и запас устойчивости по усилению не менееMs/(Ms-1). -
Mt_circles: рисует окружности, соответствующие данным уровням комплементарной чувствительности.Mt_circlesможно задать в виде числа или вектора чисел. -
critical_point: точка на вещественной оси, отмеченная как критическая для обходов по контуру. -
Если
hz=true, информация при наведении указателя мыши отображается в герцах, но входной вектор частот по-прежнему интерпретируется как выраженный в рад/с. -
balance: перед построением графика применительно к системе вызывается функцияbalance_statespace.
Аргументы kwargs передаются в качестве аргумента в plot.
#
ControlSystemsBase.pzmap — Function
fig = pzmap(fig, system, args...; hz = false, kwargs...)
Создает карту корней и полюсов для систем LTISystem в фигуре fig; аргументы args и kwargs в команду рисования графика scatter.
Чтобы настроить единичную окружность, рисуемую для дискретных систем, измените атрибуты линии, например linecolor=:red.
Если hz имеет значение true, все полюсы и нули масштабируются на 1/2π.
#
ControlSystemsBase.rgaplot — Function
rgaplot(sys, args...; hz=false)
rgaplot(LTISystem[sys1, sys2...], args...; hz=false, balance=true)
Строит график элементов массива относительных коэффициентов усиления для систем LTISystem. При необходимости можно предоставить вектор частот w.
-
Если
hz=true, по оси x графика откладываются герцы, но входной вектор частот по-прежнему интерпретируется как выраженный в рад/с. -
balance: перед построением графика применительно к системе вызывается функцияbalance_statespace.
Аргументы kwargs передаются в качестве аргумента в Plots.plot.
#
ControlSystemsBase.setPlotScale — Method
setPlotScale(str)
Задает масштаб амплитуды по умолчанию в bodeplot и sigmaplot. str должно быть "dB" или "log10". Если масштаб не выбран, по умолчанию используется "log10".
#
ControlSystemsBase.sigmaplot — Function
sigmaplot(sys, args...; hz=false balance=true, extrema)
sigmaplot(LTISystem[sys1, sys2...], args...; hz=false, balance=true, extrema)
Строить график сингулярных значений частотной характеристики для систем LTISystem. При необходимости можно предоставить вектор частот w.
-
Если
hz=true, по оси x графика откладываются герцы, но входной вектор частот по-прежнему интерпретируется как выраженный в рад/с. -
balance: перед построением графика применительно к системе вызывается функцияbalance_statespace. -
extrema: на графике рисуются только максимальное и минимальное сингулярные значения.
Аргументы kwargs передаются в качестве аргумента в Plots.plot.
Примеры
График Боде
tf1 = tf([1],[1,1])
tf2 = tf([1/5,2],[1,1,1])
sys = [tf1 tf2]
ws = exp10.(range(-2,stop=2,length=200))
bodeplot(sys, ws)
Запас устойчивости
tf1 = tf([1],[1,1])
tf2 = tf([1/5,2],[1,1,1])
ws = exp10.(range(-2,stop=2,length=200))
marginplot([tf1, tf2], ws)
График Найквиста
sys = ss([-1 2; 0 1], [1 0; 1 1], [1 0; 0 1], [0.1 0; 0 -0.2])
ws = exp10.(range(-2,stop=2,length=200))
nyquistplot(sys, ws, Ms_circles=1.2, Mt_circles=1.2)
График характеристики lsim
sys = ss([-1 2; 0 1], [1 0; 1 1], [1 0; 0 1], [0.1 0; 0 -0.2])
sysd = c2d(sys, 0.01)
L = lqr(sysd, [1 0; 0 1], [1 0; 0 1])
ts = 0:0.01:5
plot(lsim(sysd, (x,i)->-L*x, ts; x0=[1;2]), plotu=true)