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-by- 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-by-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-by-1 массив оценок нелинейности. Чтобы задать ту же нелинейность для всех выходов, задайте один выходной оценщик нелинейности.

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

  • Модель полинома ввода-вывода структуры Output-Error (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

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

Fit

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

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

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

LossFcn

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

MSE

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

FPE

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

AIC

Необработанная мера качества модели 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