Этот пример показывает, как оценить модель, которая параметризована полюсами, нулями и усилениями. Пример требует программного обеспечения 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
Создайте линейную модель серого поля, сопоставленную с функцией ОДУ.
Примите, что модель имеет пять полюсов и четыре нуля. Примите, что два из полюсов и два из нулей являются комплексно-сопряженными парами.
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
является idgrey моделью, которая сопоставлена с функцией zpkestODE.m
. Флаг 'cd'
указывает, что функция ОДУ, 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.4098 + 0.0000i
-1.1100 + 2.0000i -2.4050 + 1.4340i
-1.1100 - 2.0000i -2.4050 - 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
Команда getpvec
возвращает значения параметров для модели. В выводе выше, каждая строка отображает соответствующие начальные и предполагаемые значения параметров. Все параметры, которые были первоначально заданы как комплексно-сопряженные пары, остаются такими после оценки.
Оцените качество подгонки, обеспеченной предполагаемой моделью.
compare(zd,init_sys,sys,compareOpt);
sys
предоставляет более близкую подгонку (98,35%) результатам измерений.
c2d
| getpvec
| greyest
| idgrey
| ssdata