Функции построения графиков
Для построения любых графиков пользователю необходимо вручную загрузить библиотеку 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)