exponenta event banner

nlhw

Оценка модели Хаммерстайна-Винера

Описание

пример

sys = nlhw(Data,Orders) создает и оценивает модель Хаммерштейна-Винера, используя данные оценки, порядки моделей и задержки, а также кусочно-линейные функции по умолчанию в качестве входных и выходных нелинейных оценщиков.

пример

sys = nlhw(Data,Orders,InputNL,OutputNL) определяет InputNL и OutputNL в качестве входных и выходных оценок нелинейности соответственно.

пример

sys = nlhw(Data,LinModel) использует линейную модель для задания порядков моделей и задержек, а также кусочно-линейных функций по умолчанию для входных и выходных оценщиков нелинейности.

пример

sys = nlhw(Data,LinModel,InputNL,OutputNL) определяет InputNL и OutputNL в качестве входных и выходных оценок нелинейности соответственно.

пример

sys = nlhw(Data,sys0) уточняет или оценивает параметры модели Хаммерштейна-Винера, sys0, используя оценочные данные.

Используйте этот синтаксис для:

  • Обновление параметров ранее оцененной модели для улучшения соответствия данным оценки. В этом случае алгоритм оценки использует параметры sys0 как первоначальные догадки.

  • Оцените параметры модели, ранее созданной с помощью idnlhw конструктор. Перед оценкой можно настроить свойства модели с помощью точечной нотации.

пример

sys = nlhw(___,Options) задает дополнительные параметры оценки модели. Использовать Options с любым из предыдущих синтаксисов.

Примеры

свернуть все

load iddata3
m1 = nlhw(z3,[4 2 1]);

Загрузить данные.

load twotankdata;
z = iddata(y,u,0.2,'Name','Two tank system');
z1 = z(1:1000);

Создайте объект насыщения с нижним пределом 0 и верхним пределом 5.

InputNL = saturation('LinearInterval',[0 5]);

Оценка модели без нелинейности вывода.

m = nlhw(z1,[2 3 0],InputNL,[]);

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

Определите функцию единицы измерения и сохраните ее как gaussunit.m.


% Copyright 2015 The MathWorks, Inc.

function [f, g, a] = gaussunit(x)
f = exp(-x.*x);
if nargout>1
  g = -2*x.*f;
  a = 0.2;
end

Создайте нелинейность пользовательской сети с помощью gaussunit функция.

H = @gaussunit;
CNet = customnet(H);

Загрузите оценочные данные.

load twotankdata;
z = iddata(y,u,0.2,'Name','Two tank system');
z1 = z(1:1000);

Оцените модель Хаммерштейна-Винера с помощью пользовательской сети.

m = nlhw(z1,[5 1 3],CNet,[]);

Оценка линейной модели OE.

load throttledata.mat
Tr = getTrend(ThrottleData); 
Tr.OutputOffset = 15;
DetrendedData = detrend(ThrottleData, Tr);
opt = oeOptions('Focus','simulation');
LinearModel = oe(DetrendedData,[1 2 1],opt);

Оцените модель Хаммерстейна-Винера, используя модель OE в качестве ее линейного компонента и насыщенность в качестве выходной нелинейности.

sys = nlhw(ThrottleData,LinearModel,[],'saturation');

Загрузите оценочные данные.

load iddata1

Построение модели Хаммерштейна-Винера с помощью idnlhw для определения свойств модели B и F.

sys0 = idnlhw([2,2,0],[],'wavenet');
sys0.B{1} = [0.8,1];
sys0.F{1} = [1,-1.2,0.5];

Оцените модель.

sys = nlhw(z1,sys0);

Оценка модели Хаммерштейна-Винера с использованием nlhw для определения свойств модели B и F.

sys2 = nlhw(z1,[2,2,0],[],'wavenet','B',{[0.8,1]},'F',{[1,-1.2,0.5]});

Сравните две расчетные модели, чтобы увидеть, что они эквивалентны.

compare(z1,sys,'g',sys2,'r--');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent z1 (y1), sys: 70.04%, sys2: 70.04%.

Оцените модель Хаммерштейна-Винера.

load iddata3
sys = nlhw(z3,[4 2 1],'sigmoidnet','wavenet');

Уточнение модели, sys.

sys = nlhw(z3,sys);

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

opt = nlhwOptions;
opt.Display = 'on';
opt.SearchOptions.MaxIterations = 50;

Загрузите данные и оцените модель.

load iddata3
sys = nlhw(z3,[4 2 1],'sigmoidnet','deadzone',opt);

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

свернуть все

Данные оценки временной области, указанные как iddata

Порядок и задержки функции передачи линейной подсистемы, указанной как [nb nf nk] вектор.

Размеры Orders:

  • Для функции передачи SISO: Orders - вектор положительных целых чисел.

    nb - число нулей плюс 1, nf - количество полюсов, и nk - входная задержка.

  • Для функции передачи MIMO с nu входные данные и ny выходы, Orders - вектор матриц.

    nb, nf, и nk являются nyоколо-nu матрицы, i-j-я запись которых определяет порядки и задержку передаточной функции от j-го входа к i-му выходу.

Входной статический оценщик нелинейности, указанный как один из следующих.

'pwlinear' или pwlinear объект
(по умолчанию)
Кусочно-линейная функция
'sigmoidnet' или sigmoidnet объектСигмоидная сеть
'wavenet' или wavenet объектВейвлет-сеть
'saturation' или saturation объектНасыщенность
'deadzone' или deadzone объектМертвая зона
'poly1d' или poly1d объектОдномерный многочлен
'unitgain' или [] или unitgain объектЕдиничный коэффициент усиления
customnet объектПользовательская сеть - Аналогично sigmoidnet, но с определяемой пользователем заменой сигмоидной функции.

Например, указание вектора символов 'sigmoidnet'создает объект оценки нелинейности с настройками по умолчанию. Используйте представление объекта для настройки свойств оценщика нелинейности.

InputNL = wavenet;
InputNL.NumberOfUnits = 10;

Либо используйте связанную входную функцию оценки нелинейности с аргументами пары Имя-Значение.

InputNL = wavenet('NumberOfUnits',10);

Для nu входные каналы, можно указать нелинейные оценщики индивидуально для каждого входного канала путем установки InputNL в nu- по 1 массив нелинейных оценщиков.

InputNL = [sigmoidnet('NumberofUnits',5); deadzone([-1,2])]
Чтобы задать одинаковую нелинейность для всех входов, укажите один входной оценщик нелинейности.

Выходной статический оценщик нелинейности, указанный как одно из следующих значений:

'pwlinear' или pwlinear объект
(по умолчанию)
Кусочно-линейная функция
'sigmoidnet' или sigmoidnet объектСигмоидная сеть
'wavenet' или wavenet объектВейвлет-сеть
'saturation' или saturation объектНасыщенность
'deadzone' или deadzone объектМертвая зона
'poly1d' или poly1d объектОдномерный многочлен
'unitgain' или [] или unitgain объектЕдиничный коэффициент усиления
customnet объектПользовательская сеть - Аналогично sigmoidnet, но с определяемой пользователем заменой сигмоидной функции.

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

OutputNL = sigmoidnet;
OutputNL.NumberOfUnits = 10;

Либо используйте связанную входную функцию оценки нелинейности с аргументами пары Имя-Значение.

OutputNL = sigmoidnet('NumberOfUnits',10);

Для ny выходные каналы, можно указать нелинейные оценщики отдельно для каждого выходного канала путем установки OutputNL в ny- по 1 массив нелинейных оценщиков. Чтобы задать одинаковую нелинейность для всех выходов, укажите один модуль оценки нелинейности выхода.

Линейная модель дискретного времени, используемая для задания линейной подсистемы, заданная как одно из следующих значений:

  • Полиномиальная модель «вход-выход» структуры «Ошибка вывода» (OE) (idpoly)

  • Модель состояния-пространства без компонента возмущения (idss с K = 0)

  • Модель передаточной функции (idtf)

Как правило, модель оценивается с помощью oe, n4sid, или tfest.

Модель Хаммерстайна-Винера, указанная как idnlhw объект. sys0 могут быть:

  • Модель, ранее созданная с помощью idnlhw для задания свойств модели.

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

    Можно также уточнить sys0 используя исходный набор оценочных данных. Если предыдущая оценка остановилась, когда численный поиск застрял в локальных минимумах функции затрат, используйте init чтобы сначала рандомизировать параметры sys0. Посмотрите sys0.Report.Termination для условий остановки поиска. Используя init не гарантирует лучшего решения по дальнейшей доработке.

Варианты оценки для идентификации модели Хаммерштейна-Винера, указанные как nlhwOptions набор опций.

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

свернуть все

Оценочная модель Хаммерштейна-Винера, возвращенная в качестве idnlhw объект. Модель оценивается с использованием указанных порядков и задержек модели, входных и выходных оценщиков нелинейности и опций оценки.

Информация о результатах оценки и используемых опциях хранится в Report свойство модели. Report имеет следующие поля:

Поле отчетаОписание
Status

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

Method

Используется команда оценки.

Fit

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

ОбластьОписание
FitPercent

Нормализованная среднеквадратическая ошибка (NRMSE) измерения того, насколько хорошо отклик модели соответствует данным оценки, выраженным в процентах fit = 100 (1-NRMSE).

LossFcn

Значение функции потерь после завершения оценки.

MSE

Показатель среднеквадратичной ошибки (MSE) того, насколько хорошо отклик модели соответствует данным оценки.

FPE

Ошибка окончательного прогноза для модели.

AIC

Показатель качества модели Raw Akaike Information Criteria (AIC).

AICc

Небольшой размер выборки, скорректированный AIC.

nAIC

Нормализованная AIC.

BIC

Байесовские информационные критерии (BIC).

Parameters

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

OptionsUsed

Набор опций, используемый для оценки. Если пользовательские параметры не были настроены, это набор параметров по умолчанию. Посмотрите nlhwOptions для получения дополнительной информации.

RandState

Состояние потока случайных чисел в начале оценки. Пустое, [], если рандомизация не использовалась во время оценки. Дополнительные сведения см. в разделе rng.

DataUsed

Атрибуты данных, используемых для оценки, возвращаемые в виде структуры со следующими полями:

ОбластьОписание
Name

Имя набора данных.

Type

Тип данных.

Length

Количество выборок данных.

Ts

Время выборки.

InterSample

Поведение ввода между образцами, возвращаемое как одно из следующих значений:

  • 'zoh' - Удержание нулевого порядка поддерживает кусочно-постоянный входной сигнал между выборками.

  • 'foh' - Удержание первого порядка поддерживает кусочно-линейный входной сигнал между выборками.

  • 'bl' - Поведение с ограниченной полосой указывает, что входной сигнал непрерывного времени имеет нулевую мощность выше частоты Найквиста.

InputOffset

Смещение удалено из входных данных временной области во время оценки. Для нелинейных моделей это [].

OutputOffset

Смещение удалено из выходных данных временной области во время оценки. Для нелинейных моделей это [].

Termination

Условия завершения итеративного поиска, используемые для минимизации ошибок прогнозирования, возвращены в виде структуры со следующими полями:

ОбластьОписание
WhyStop

Причина прекращения числового поиска.

Iterations

Количество итераций поиска, выполненных алгоритмом оценки.

FirstOrderOptimality

∞-norm вектора поиска градиента при завершении алгоритма поиска.

FcnCount

Число вызовов целевой функции.

UpdateNorm

Норма вектора поиска градиента в последней итерации. Опущено, когда метод поиска 'lsqnonlin' или 'fmincon'.

LastImprovement

Улучшение критерия в последней итерации, выраженное в процентах. Опущено, когда метод поиска 'lsqnonlin' или 'fmincon'.

Algorithm

Алгоритм, используемый 'lsqnonlin' или 'fmincon' способ поиска. Опускается при использовании других методов поиска.

Для методов оценки, которые не требуют оптимизации числового поиска, Termination поле опущено.

Дополнительные сведения см. в разделе Отчет об оценке.

Расширенные возможности

Представлен в R2007a