Идентификационные данные
Все методы оценки в этом пакете принимают объект типа AbstractIdData
, созданный функцией iddata
. Этот объект обычно содержит данные входа и выхода, а также интервал выборки.
#
ControlSystemIdentification.iddata
— Function
iddata(y, Ts = nothing)
iddata(y, u, Ts = nothing)
iddata(y, u, x, Ts = nothing)
Создает объект идентификационных данных временной области.
Аргументы
-
y::AbstractArray
: выходные данные (обязательно) -
u::AbstractArray
: входные данные (если доступны) -
x::AbstractArray
: данные состояния (если доступны) -
Ts::Union{Real,Nothing} = nothing
: дополнительный интервал выборки
Если временные ряды являются многомерными, время находится в последнем измерении, то есть размеры массивов равны (num_variables, num_timepoints)
(см. примеры ниже).
Операции с iddata
-
Добавление двух к временному измерению
[d1 d2]
(это делается только в том случае, если состояние системы в концеd1
близко к состоянию в началеd2
) -
Индексирование временных рядов
d[output_index, input_index]
-
Индексирование оси времени с помощью индексов
d[time_indices]
-
Индексирование оси времени с помощью секунд
d[3Sec:12Sec]
(using ControlSystemIdentification: Sec
) -
Доступ к количеству входных данных, выходных данных и времени выборки:
d.nu, d.ny, d.Ts
-
Доступ к вектору времени
d.t
-
Умножение в обычном порядке для масштабирования выходных данных
C * d
. Перед оценкой модели обычно рекомендуется масштабировать выходные данные системы с несколькими выводами так, чтобы они имели примерно одинаковый размер, в случае если они имеют разную величину. -
Умножение в обычном порядке для масштабирования входных данных
d * B
-
plot
Примеры
julia> iddata(randn(10))
Output data of length 10 with 1 outputs, Ts = nothing
julia> iddata(randn(10), randn(10), 1)
InputOutput data of length 10, 1 outputs, 1 inputs, Ts = 1
julia> d = iddata(randn(2, 10), randn(3, 10), 0.1)
InputOutput data of length 10, 2 outputs, 3 inputs, Ts = 0.1
julia> [d d] # Конкатенация по времени
InputOutput data of length 20, 2 outputs, 3 inputs, Ts = 0.1
julia> d[1:3]
InputOutput data of length 3, 2 outputs, 3 inputs, Ts = 0.1
julia> d.nu
3
julia> d.t # доступ к вектору времени
0.0:0.1:0.9
Использование нескольких наборов данных
Некоторые методы оценки поддерживают использование нескольких наборов данных для оценки модели. В этом случае наборы данных предоставляются в виде вектора объектов iddata. Вот эти методы:
Некоторые другие методы оценки можно адаптировать для использования нескольких наборов данных с минимальными изменениями.
Иногда несколько наборов данных можно также обрабатывать путем конкатенации. Для этого состояние системы в конце одного набора данных должно быть близко к состоянию в начале следующего. Например, все эксперименты должны начинаться и заканчиваться в одной и той же рабочей точке.
iddata(y::AbstractArray, u::AbstractArray, w::AbstractVector)
Создает объект входных-выходных данных частотной области. w
должен быть указан в рад/с.
iddata(res::ControlSystemsBase.SimResult)
Создает объект идентификационных данных непосредственно из результатов моделирования.
#
ControlSystemIdentification.predictiondata
— Function
predictiondata(d::AbstractIdData)
Добавляет выходное значение y
к входному u_new = [u; y]