В этом примере показаны некоторые методы выбора и конфигурирования структуры модели. Оценка модели с использованием данных измерений требует предварительного выбора структуры модели (например, состояния-пространства или передаточной функции) и ее порядка (например, количества полюсов и нулей). На этот выбор влияют предшествующие знания о моделируемой системе, но он также может быть мотивирован анализом самих данных. В этом примере описываются некоторые опции для определения заказов модели и задержки ввода.
Выбор структуры модели обычно является первым шагом к ее оценке. Существуют различные возможности для структуры - состояние-пространство, передаточные функции и полиномиальные формы, такие как ARX, ARMAX, OE, BJ и т. д. Если у вас нет подробных данных о вашей системе, таких как характеристики шума и индикация обратной связи, выбор разумной структуры может быть неочевидным. Также для данного выбора структуры необходимо указать порядок модели перед оценкой соответствующих параметров. System Identification Toolbox™ предлагает несколько инструментов, помогающих в выборе заказа модели.
На выбор модельного заказа также влияет величина задержки. Хорошая идея задержки ввода упрощает задачу определения порядка других модельных коэффициентов. Ниже рассматриваются некоторые варианты определения задержки ввода и структура модели и выбор заказа.
В этом примере используются данные фена, также используемые iddemo1 («Оценка простых моделей по данным реального лабораторного процесса»). Процесс состоит из прокаливания воздуха через трубку. Воздух нагревается на входе трубки, а на входе находится напряжение, приложенное к нагревателю. Выходной сигнал - это температура на выходе трубки.
Начнем с загрузки данных измерений и выполнения некоторых основных операций предварительной обработки:
load dry2
Сформировать набор данных для оценки первой половины и эталонный набор для целей проверки второй половины:
ze = dry2(1:500); zr = dry2(501:1000);
Определите каждый из наборов:
ze = detrend(ze); zr = detrend(zr);
Рассмотрим часть оценочных данных:
plot(ze(200:350))

Существуют различные варианты определения временной задержки от входа к выходу. Это:
Использование DELAYEST утилита.
Использование непараметрической оценки импульсной характеристики, использование IMPULSEEST.
Использование оценщика модели состояния-пространства N4SID с рядом различных порядков и обнаружением задержки «лучшего».
Используя delayest:
Давайте подробно обсудим вышеуказанные варианты. Функция delayest возвращает оценку задержки для данного выбора порядков многочленов числителя и знаменателя. Эта функция вычисляет структуру ARX:
y(t) + a1*y(t-1) + ... + ana*y(t-na) = b1*u(t-nk) + ...+bnb*u(t-nb-nk+1)
с различными задержками и выбирает значение задержки, которое, по-видимому, возвращает наилучшее соответствие. В этом процессе выбираются значения na и nb используются.
delay = delayest(ze) % na = nb = 2 is used, by default
delay =
3
По умолчанию возвращается значение 3. Но это значение может измениться немного, если изменятся предполагаемые порядки многочленов числителя и знаменателя (2 здесь). Например:
delay = delayest(ze,5,4)
delay =
2
возвращает значение 2. Чтобы получить представление о том, как delayest работает, давайте оценим функцию потерь для различных вариантов задержек явным образом. Мы выбираем модель второго заказа (na=nb=2), который является значением по умолчанию для delayestи пробовать каждую задержку времени от 1 до 10. Функция потерь для различных моделей вычисляется с использованием набора данных проверки:
V = arxstruc(ze,zr,struc(2,2,1:10));
Теперь мы выбираем эту задержку, которая наилучшим образом соответствует данным проверки:
[nn,Vm] = selstruc(V,0); % nn is given as [na nb nk]
Выбранная структура была:
nn
nn =
2 2 3
которые показывают, что лучшая модель имеет задержку nn (3) = 3.
Мы также можем проверить, как посадка зависит от задержки. Эта информация возвращается во втором выводе Vm. Логарифмы квадратичной функции потерь задаются как первая строка, в то время как индексы na, nb и nk приведены в виде столбца под соответствующей функцией потерь.
Vm
Vm =
Columns 1 through 7
-0.1480 -1.3275 -1.8747 -0.2403 -0.0056 0.0736 0.1763
2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000
2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
Columns 8 through 10
0.1906 0.1573 0.1474
2.0000 2.0000 2.0000
2.0000 2.0000 2.0000
8.0000 9.0000 10.0000
The choice of 3 delays is thus rather clear, since the corresponding loss is minimum.
Используя impulse
Чтобы лучше понять динамику, давайте рассчитаем импульсную реакцию системы. Мы будем использовать функцию impulseest для вычисления непараметрической модели импульсной характеристики. Мы строим график этого ответа с доверительным интервалом, представленным 3 стандартными отклонениями.
FIRModel = impulseest(ze); clf h = impulseplot(FIRModel); showConfidence(h,3)

Заполненная светло-синяя область показывает доверительный интервал для незначительного отклика в этой оценке. Имеется четкое указание на то, что импульсная характеристика «снимается» (покидает область неопределенности) после 3 выборок. Это указывает на задержку в три интервала.
Используя n4sid оценка состояния-пространства на основе
Мы также можем оценить семейство параметрических моделей, чтобы найти задержку, соответствующую «лучшей» модели. В случае моделей пространства состояний диапазон заказов может оцениваться одновременно и наилучший порядок выбирается из графика сингулярного значения Hankel. Выполните следующую команду для вызова n4sid в интерактивном режиме:
m = n4sid(ze,1:15); % Все заказы от 1 до 15.

График показывает порядок 3 в качестве наилучшего значения. Для этого выбора давайте рассчитаем импульсную характеристику модели m:
m = n4sid(ze, 3); showConfidence(impulseplot(m),3)

Как и в случае непараметрической импульсной характеристики, имеется четкое указание на то, что задержка от входа к выходу составляет три выборки.
В отсутствие каких-либо предварительных знаний, желательно попробовать различные доступные варианты и использовать тот, который, кажется, работает лучше всего. Модели пространства состояний могут быть хорошей отправной точкой, поскольку для оценки модели необходимо указать только количество состояний. Кроме того, диапазон заказов может быть быстро оценен с использованием n4sid, для определения наилучшего порядка, как описано в следующем разделе. Для полиномиальных моделей аналогичное преимущество реализуется с помощью arx оценщик. Модели с ошибкой вывода (OE) также могут быть хорошим выбором для начальной полиномиальной модели из-за их простоты.
После принятия решения об использовании структуры модели следующая задача состоит в определении порядка (ов). В целом цель должна заключаться в том, чтобы не использовать порядок моделей выше необходимого. Это может быть определено путем анализа улучшения% соответствия как функции порядка модели. При этом рекомендуется использовать отдельный независимый набор данных для проверки. Выбор независимого набора данных проверки (zr в нашем примере) улучшило бы обнаружение чрезмерной подгонки.
В дополнение к прогрессивному анализу нескольких заказов модели для некоторых структур модели может быть выполнено явное определение оптимальных заказов. Функции arxstruc и selstruc может использоваться для выбора наилучшего заказа для моделей ARX. В нашем примере проверим соответствие для всех 100 комбинаций до 10 b-параметры и до 10 a-параметры, все со значением задержки 3:
V = arxstruc(ze,zr,struc(1:10,1:10,3));
Наилучшее соответствие для набора проверочных данных получается для:
nn = selstruc(V,0)
nn =
10 4 3
Проверим, насколько улучшена посадка для моделей более высокого порядка. Для этого используется функция selstruc только с одним входом. В этом случае формируется график, показывающий подгонку как функцию от числа используемых параметров. Пользователю также предлагается ввести количество параметров. Затем подпрограмма выбирает структуру с этими множеством параметров, которая дает наилучшее соответствие. Следует отметить, что несколько различных структур модели используют одинаковое количество параметров. Для интерактивного выбора заказа модели выполните следующую команду:
nns = selstruc(V) % вызывают selstructure в интерактивном режиме

Таким образом, наилучшая подгонка получается для nn = [4 4 3], в то время как мы видим, что улучшенная подгонка по сравнению с nn = [2 2 3] является довольно маргинальной.
Мы также можем подойти к этой проблеме со стороны сокращения модели более высокого порядка. Если порядок выше необходимого, то дополнительные параметры в основном используются для «моделирования» шума измерения. Эти «лишние» полюса оцениваются с более низким уровнем точности (большой доверительный интервал). Если они отменены нулем, расположенным поблизости, то это указывает на то, что эта пара полюс-ноль может не потребоваться для захвата существенной динамики системы.
Для примера давайте вычислим модель 4-го порядка:
th4 = arx(ze,[4 4 3]);
Проверим конфигурацию полюс-ноль для этой модели. Мы также можем включить доверительные области для полюсов и нулей, соответствующих 3 стандартным отклонениям, чтобы определить, насколько точно они оценены, а также насколько близки полюса и нули друг к другу.
h = iopzplot(th4); showConfidence(h,3)

Доверительные интервалы для двух комплексно-сопряженных полюсов и нулей перекрываются, что указывает на то, что они, вероятно, отменят друг друга. Следовательно, модель второго порядка может быть адекватной. На основе этого доказательства давайте рассчитаем модель ARX 2-го порядка:
th2 = arx(ze,[2 2 3]);
Мы можем проверить, насколько хорошо эта модель (th2) способен воспроизводить набор проверочных данных. Для сравнения смоделированных выходных данных двух моделей с фактическими выходными данными (с выводом на график средних 200 точек данных) используется compare утилита:
compare(zr(150:350),th2,th4)

Сюжет указывает на отсутствие существенной потери точности в снижении порядка с 4 до 2. Мы также можем проверить остатки («остатки») этой модели, то есть то, что остается необъяснимым моделью.
e = resid(ze,th2);
plot(e(:,1,[])), title('The residuals')

Мы видим, что остатки довольно малы по сравнению с уровнем сигнала выхода, что они достаточно хорошо (хотя и не идеально) не коррелированы с входом и между собой. Таким образом, мы можем быть (временно) удовлетворены моделью th2.
Теперь давайте проверим, можем ли мы определить порядок модели для структуры state-space. Как и прежде, мы знаем, что задержка составляет 3 выборки. Мы можем попробовать все заказы от 1 до 15 с общим лагом в 3 образца в n4sid. Выполните следующую команду, чтобы попробовать различные заказы и выбрать один в интерактивном режиме.
ms = n4sid(ze,[1:15],'InputDelay',2); Оценка% n4sid с переменными порядками

Значение «InputDelay» было равно 2, поскольку по умолчанию n4sid оценивает модель без сквозного канала (на который приходится одна пробная задержка между входом и выходом). Порядок по умолчанию, указанный на рисунке выше, равен 3, что хорошо согласуется с нашими предыдущими результатами. Наконец, мы сравним, как state-space модель ms и модель ARX th2 сравнить при воспроизведении измеренных выходных данных валидации:
ms = n4sid(ze,3,'InputDelay',2);
compare(zr,ms,th2)

График сравнения показывает, что две модели практически идентичны.
В этом примере описаны некоторые варианты выбора приемлемого порядка моделей. Заблаговременное определение задержки может упростить задачу выбора заказов. С ARX и state-space структурами у нас есть некоторые специальные инструменты (arx и n4sid оценщики) для автоматической оценки целого набора модельных заказов и выбора лучшего из них. Информация, выявленная в этом упражнении (с использованием таких утилит, как arxstruc, selstruc, n4sid и delayest) может быть использован в качестве отправной точки при оценке моделей других структур, таких как BJ и ARMAX.