В этом примере показано, как оценивать модели Хаммерштейна-Винера с использованием линейных моделей OE.
Загрузите оценочные данные.
load throttledata.matЭта команда загружает объект данных ThrottleData в рабочую область. Объект содержит входные и выходные выборки, собранные из системы дроссельной заслонки двигателя, дискретизированные со скоростью 100Hz.
Двигатель постоянного тока управляет углом открытия поворотного клапана в дроссельной системе. Шаговый сигнал (в вольтах) приводит в действие двигатель постоянного тока. Выходной сигнал представляет собой угловое положение клапана (в градусах).
Постройте график данных для просмотра и анализа признаков данных.
plot(ThrottleData)

В нормальном рабочем диапазоне 15-90 градусов входные и выходные переменные имеют линейную зависимость. Для моделирования этой взаимосвязи используется линейная модель низкого порядка.
В дроссельной системе жесткий упор ограничивает положение клапана до 90 градусов, и пружина приводит клапан к 15 градусы, когда двигатель постоянного тока выключен. Эти физические компоненты вводят нелинейность, которую линейная модель не может захватить.
Оцените модель Хаммерштейна-Винера для моделирования линейного поведения этой системы с одним входом и одним выходом в нормальном рабочем диапазоне.
% Detrend the data because linear models cannot capture offsets. Tr = getTrend(ThrottleData); Tr.OutputOffset = 15; DetrendedData = detrend(ThrottleData,Tr); % Estimate a linear OE model with na=2, nb=1, nk=1. opt = oeOptions('Focus','simulation'); LinearModel = oe(DetrendedData,[2 1 1],opt);
Сравните смоделированный отклик модели с оценочными данными.
compare(DetrendedData, LinearModel)

Линейная модель фиксирует поведение подъема и оседания в линейном рабочем диапазоне, но не учитывает насыщение выходного сигнала при 90 градусах.
Оцените модель Хаммерштейна-Винера для моделирования насыщения выходных данных.
NonlinearModel = nlhw(ThrottleData, LinearModel, [], 'saturation');Программа использует порядки и задержки линейной модели для порядков нелинейной модели. Кроме того, программное обеспечение использует многочлены B и F линейной передаточной функции.
Сравните нелинейную модель с данными.
compare(ThrottleData, NonlinearModel)
