Этот пример показывает, как оценить модель, которая параметризована полюсами, нулями и усилениями. Для примера требуется программное обеспечение Control System Toolbox™.
Вы параметризоваете модель, используя комплексно-сопряженные пары полюс/ноль. Когда вы параметризоваете реальную, серый ящик модель, используя комплексно-сопряженные пары параметров, программное обеспечение обновляет значения параметров таким образом, чтобы предполагаемые значения также были комплексными сопряженными парами.
Загрузите измеренные данные.
load zpkestdata zd;
Переменная zd, которая содержит измеренные данные, загружается в рабочую область MATLAB ®.
plot(zd);
Выходные выходы показывают задержку на входе приблизительно 3,14 секунды.
Оцените модель с помощью формы с нулями , полюса и усиления (zpk) с помощью zpkestODE
функция. Чтобы просмотреть эту функцию, введите
type zpkestODE
function [a,b,c,d] = zpkestODE(z,p,k,Ts,varargin) %zpkestODE ODE file that parameterizes a state-space model using poles and %zeros as its parameters. % % Requires Control System Toolbox. % Copyright 2011 The MathWorks, Inc. sysc = zpk(z,p,k); if Ts==0 [a,b,c,d] = ssdata(sysc); else [a,b,c,d] = ssdata(c2d(sysc,Ts,'foh')); end
Создайте линейную модель «серый ящик», связанную с функцией ODE.
Предположим, что модель имеет пять полюсов и четыре нуля. Предположим, что два полюса и два нули являются комплексными сопряженными парами.
z = [-0.5+1i, -0.5-1i, -0.5, -1]; p = [-1.11+2i, -1.11-2i, -3.01, -4.01, -0.02]; k = 10.1; parameters = {z,p,k}; Ts = 0; odefun = @zpkestODE; init_sys = idgrey(odefun,parameters,'cd',{},Ts,'InputDelay',3.14);
z
, p
, и k
являются начальными предположениями для параметров модели.
init_sys
является моделью идгри, которая связана с zpkestODE.m
функция. The 'cd'
флаг указывает, что функция ODE, zpkestODE
, возвращает непрерывные или дискретные модели, в зависимости от периода дискретизации.
Оцените качество подгонки, обеспечиваемой начальной моделью.
compareOpt = compareOptions('InitialCondition','zero'); compare(zd,init_sys,compareOpt);
Исходная модель обеспечивает плохую подгонку.
Задайте опции оценки.
opt = greyestOptions('InitialState','zero','DisturbanceModel','none','SearchMethod','gna');
Оцените модель.
sys = greyest(zd,init_sys,opt);
sys
, модель idgrey, содержит предполагаемые параметры модели с нулями , полюса и усиления.
Сравните оценочные и начальные значения параметров.
[getpvec(init_sys) getpvec(sys)]
ans = 10×2 complex
-0.5000 + 1.0000i -1.6158 + 1.6173i
-0.5000 - 1.0000i -1.6158 - 1.6173i
-0.5000 + 0.0000i -0.9417 + 0.0000i
-1.0000 + 0.0000i -1.4097 + 0.0000i
-1.1100 + 2.0000i -2.4051 + 1.4340i
-1.1100 - 2.0000i -2.4051 - 1.4340i
-3.0100 + 0.0000i -2.3386 + 0.0000i
-4.0100 + 0.0000i -2.3391 + 0.0000i
-0.0200 + 0.0000i -0.0082 + 0.0000i
10.1000 + 0.0000i 9.7881 + 0.0000i
The getpvec
команда возвращает значения параметров для модели. В выходах выше каждая строка отображает соответствующие начальные и оцененные значения параметров. Все параметры, которые были первоначально заданы как комплексные сопряженные пары, остаются такими после оценки.
Оцените качество подгонки, предоставленной предполагаемой моделью.
compare(zd,init_sys,sys,compareOpt);
sys
обеспечивает более близкую подгонку (98,35%) измеренным данным.
c2d
| getpvec
| greyest
| idgrey
| ssdata