В этом примере показано, как оценить нелинейные модели ARX при помощи линейных моделей ARX.
Загрузите данные об оценке.
load throttledata.mat
Эта команда загружает объект данных ThrottleData
в рабочую область. Объект содержит выборки ввода и вывода, собранные из системы дросселя механизма, произведенной на уровне 100 Гц.
Двигатель постоянного тока управляет вводным углом клапана-бабочки в системе дросселя. Сигнал шага (в вольтах) управляет двигателем постоянного тока. Выход является угловым положением (в градусах) клапана.
Отобразите данные на графике, чтобы просмотреть и анализировать характеристики данных.
plot(ThrottleData)
В нормальном рабочем диапазоне 15-90 градусов переменные ввода и вывода имеют линейное соотношение. Вы используете линейную модель младшего разряда, чтобы смоделировать это отношение.
В системе дросселя жесткий упор ограничивает положение клапана 90
степени, и пружина приносят клапан к 15
степени, когда двигатель постоянного тока выключен. Эти физические компоненты вводят нелинейность, которую не может получить линейная модель.
Оцените, что модель ARX моделирует линейное поведение этого одно входа система одно выхода в нормальном рабочем диапазоне.
Детрендируйте данные, потому что линейные модели не могут получить смещения.
Tr = getTrend(ThrottleData); Tr.OutputOffset = 15; DetrendedData = detrend(ThrottleData,Tr);
Оцените линейную модель ARX с na=2, nb=1, nk=1.
opt = arxOptions('Focus','simulation'); LinearModel = arx(DetrendedData,[2 1 1],opt);
Сравните симулированный ответ модели с данными об оценке.
compare(DetrendedData, LinearModel)
Линейная модель получает повышение и урегулирование поведения в линейном рабочем диапазоне, но не составляет выходное насыщение в 90 градусах.
Оцените, что нелинейная модель ARX моделирует выходное насыщение.
optNL = nlarxOptions('Focus','simulation'); NonlinearModel = nlarx(ThrottleData,LinearModel,'sigmoidnet',optNL);
Программное обеспечение использует порядки и задержку линейной модели для порядков нелинейной модели. Кроме того, программное обеспечение вычисляет линейную функцию sigmoidnet
средство оценки нелинейности.
Сравните нелинейную модель с данными об оценке.
compare(ThrottleData, NonlinearModel)
Модель получает нелинейные эффекты (выходное насыщение) и улучшает полную подгонку к данным.