pem

Ошибка прогноза оценивает для линейной и нелинейной модели

Синтаксис

sys = pem(data,init_sys)
sys = pem(data,init_sys,opt)

Описание

пример

sys = pem(data,init_sys) обновляет параметры первоначальной модели, чтобы соответствовать данным об оценке. Функция использует алгоритм минимизации ошибки прогноза, чтобы обновить параметры первоначальной модели. Используйте эту команду, чтобы совершенствовать параметры ранее предполагаемой модели.

пример

sys = pem(data,init_sys,opt) задает опции оценки с помощью набора опции.

Примеры

свернуть все

Оцените модель в пространстве состояний дискретного времени с помощью метода подпространства. Затем совершенствуйте его путем минимизации ошибки прогноза.

Оцените модель в пространстве состояний дискретного времени с помощью n4sid, который применяет метод подпространства.

load iddata7 z7;
z7a = z7(1:300);
opt = n4sidOptions('Focus','simulation');
init_sys = n4sid(z7a,4,opt);

init_sys обеспечивает подгонку на 73,85% к данным об оценке.

init_sys.Report.Fit.FitPercent
ans = 73.8490

Используйте pem, чтобы улучшить близость подгонки.

sys = pem(z7a,init_sys);

Анализ результатов.

compare(z7a,sys,init_sys);

sys обеспечивает подгонку на 74,54% к данным об оценке.

Оцените, что параметры нелинейной модели серого поля соответствуют данным о двигателе постоянного тока.

Загрузите экспериментальные данные и задайте атрибуты сигнала, такие как время начала и модули.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
data = iddata(y, u, 0.1);
data.Tstart = 0;
data.TimeUnit = 's';

Сконфигурируйте нелинейную модель (idnlgrey) модели серого поля.

В данном примере используйте файл dcmotor_m.m. Чтобы просмотреть этот файл, введите edit dcmotor_m.m в командной строке MATLAB®.

file_name = 'dcmotor_m';
order = [2 1 2];
parameters = [1;0.28];
initial_states = [0;0];
Ts = 0;
init_sys = idnlgrey(file_name,order,parameters,initial_states,Ts);
init_sys.TimeUnit = 's';

setinit(init_sys,'Fixed',{false false});

init_sys является нелинейной моделью серого поля со своей структурой, описанной dcmotor_m.m. Модель имеет вход того, два выходных параметров и два состояния, как задано order.

setinit(init_sys,'Fixed',{false false}) указывает, что начальные состояния init_sys являются свободными параметрами оценки.

Оцените параметры модели и начальные состояния.

sys = pem(data,init_sys);

sys является моделью idnlgrey, которая инкапсулирует предполагаемые параметры и их ковариацию.

Анализируйте результат оценки.

compare(data,sys,init_sys);

sys обеспечивает подгонку на 98,34% к данным об оценке.

Создайте структуру модели процесса и обновите ее значения параметров, чтобы минимизировать ошибку прогноза.

Инициализируйте коэффициенты модели процесса.

init_sys = idproc('P2UDZ');
init_sys.Kp = 10;
init_sys.Tw = 0.4;
init_sys.Zeta = 0.5;
init_sys.Td = 0.1;
init_sys.Tz = 0.01;

Kp, Tw, Zeta, Td и коэффициенты Tz init_sys сконфигурированы с их исходными предположениями.

Используйте init_sys, чтобы сконфигурировать оценку ошибочной модели минимизации прогноза, использующей результаты измерений. Поскольку init_sys является моделью idproc, используйте procestOptions, чтобы создать набор опции.

load iddata1 z1;
opt = procestOptions('Display','on','SearchMethod','lm');
sys = pem(z1,init_sys,opt);

Исследуйте образцовую подгонку.

sys.Report.Fit.FitPercent
ans = 70.6330

sys обеспечивает подгонку на 70,63% к результатам измерений.

Входные параметры

свернуть все

Данные об оценке, которые содержат измеренные данные ввода - вывода, заданные как объект iddata или idfrd. Можно использовать данные частотного диапазона только, когда init_sys является линейной моделью.

Размерности ввода - вывода data и init_sys должны соответствовать.

Идентифицированная модель, которая конфигурирует начальную параметризацию sys, заданного как линейная, или нелинейная модель. Можно получить init_sys путем выполнения оценки с помощью результатов измерений или прямой конструкцией.

init_sys должен иметь конечные значения параметров. Можно сконфигурировать исходные предположения, задать минимальные/максимальные границы и зафиксировать или свободный для оценки любого параметра init_sys:

  • Для линейных моделей используйте свойство Structure. Для получения дополнительной информации смотрите Внушительные Ограничения на Значения Параметра модели.

  • Для нелинейных моделей серого поля используйте свойства InitialStates и Parameters. Ограничения параметра не могут быть заданы для нелинейного ARX и моделей Хаммерстайна-Винера.

Опции оценки, которые конфигурируют настройки алгоритма, обработку особого внимания оценки, начальных условий и смещений данных, заданных как набор опции. Команда, используемая, чтобы создать набор опции, зависит от начального типа модели:

Выходные аргументы

свернуть все

Идентифицированная модель, возвращенная как тот же тип модели как init_sys. Модель получена путем оценки свободных параметров init_sys с помощью ошибочного алгоритма минимизации прогноза.

Алгоритмы

PEM использует числовую оптимизацию, чтобы минимизировать функцию стоимости, взвешенную норму ошибки прогноза, заданной можно следующим образом для скалярных выходных параметров:

VN(G,H)=t=1Ne2(t)

где e (t) является различием между измеренным выводом и предсказанным выводом модели. Для линейной модели ошибка задана как:

e(t)=H1(q)[y(t)G(q)u(t)]

где e (t) является вектором и функцией стоимости VN(G,H) скалярное значение. Индекс N указывает, что функция стоимости является функцией количества выборок данных и становится более точной для больших значений N. Для нескольких - выходные модели, предыдущее уравнение является более комплексным. Для получения дополнительной информации см. главу 7 в System Identification: Теория для Пользователя, Второго Выпуска, Lennart Ljung, PTR Prentice Hall, 1999.

Альтернативная функциональность

Можно достигнуть тех же результатов как pem при помощи специализированных команд оценки для различных образцовых структур. Например, используйте ssest(data,init_sys) для оценки моделей в пространстве состояний.

Представлено до R2006a