Этот пример показывает, как оценить модели Хаммерстайна-Винера с помощью линейных моделей OE.
Загрузите данные об оценке.
load throttledata.mat
Эта команда загружает объект данных ThrottleData
в рабочую область. Объект содержит выборки ввода и вывода, собранные из системы дросселя механизма, выбранной на уровне 100 Гц.
Двигатель постоянного тока управляет вводным углом клапана-бабочки в системе дросселя. Сигнал шага (в вольтах) управляет двигателем постоянного тока. Вывод является угловым положением (в градусах) клапана.
Отобразите данные на графике, чтобы просмотреть и анализировать характеристики данных.
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)