Оценка импульсной характеристики
Функции impulseest
(data, order; λ=0, estimator=ls)
и impulseestplot
производят оценку импульсной характеристики, выполняя подгонку FIR-модели высокого порядка. Функция okid
оценивает марковские параметры и применима к системам MIMO.
Пример системы SISO
T = 200
h = 1
t = 0:h:T-h
sys = c2d(tf(1,[1,2*0.1,0.1]),h)
u = randn(1, length(t))
res = lsim(sys, u, t)
d = iddata(res)
impulseestplot(d,50, lab="Estimate", seriestype=:steppost)
plot!(impulse(sys,50), lab="True system", l=:dash)
Пример системы MIMO
using ControlSystemIdentification, ControlSystemsBase, Plots
T = 200
h = 1
t = 0:h:T-h
sys = ssrand(2,2,4, proper=true, Ts=h)
u = randn(sys.nu, length(t))
res = lsim(sys, u, t)
d = iddata(res)
H = okid(d, sys.nx)
plot(impulse(sys,50), lab="True system", layout=sys.ny+sys.nu, sp=(1:4)')
plot!(reshape(H, sys.nu+sys.ny, :)', lab="OKID Estiamte", seriestype=:steppre, l=:dash)
Дополнительные сведения см. в интерактивных скриптах с примерами.
Оценка модели на основе данных импульсной характеристики
Алгоритмы era
(алгоритм реализации собственных значений) и okid
(идентификация наблюдателя Калмана) часто используются совместно, причем второй из них оценивает марковские параметры (импульсную характеристику), а первый принимает их и оценивает модель в пространстве состояний. Если марковские параметры уже имеются, можно напрямую вызвать era
, чтобы оценить модель на основе импульсной характеристики.