Оцените модель с использованием параметров нули/полюса/усиления

Этот пример показывает, как оценить модель, которая параметризована полюсами, нулями и усилениями. Для примера требуется программное обеспечение Control System Toolbox™.

Вы параметризоваете модель, используя комплексно-сопряженные пары полюс/ноль. Когда вы параметризоваете реальную, серый ящик модель, используя комплексно-сопряженные пары параметров, программное обеспечение обновляет значения параметров таким образом, чтобы предполагаемые значения также были комплексными сопряженными парами.

Загрузите измеренные данные.

load zpkestdata zd;

Переменная zd, которая содержит измеренные данные, загружается в рабочую область MATLAB ®.

plot(zd);

Figure contains 2 axes. Axes 1 with title y1 contains an object of type line. This object represents zd. Axes 2 with title u1 contains an object of type line. This object represents 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);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent zd (y1), init\_sys: -40.72%.

Исходная модель обеспечивает плохую подгонку.

Задайте опции оценки.

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);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent zd (y1), init\_sys: -40.72%, sys: 99.33%.

sys обеспечивает более близкую подгонку (98,35%) измеренным данным.

См. также

| | | |

Похожие темы