nlhw

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

Синтаксис

sys = nlhw(Data,Orders)
sys = nlhw(Data,Orders,InputNL,OutputNL)
sys = nlhw(Data,LinModel)
sys = nlhw(Data,LinModel,InputNL,OutputNL)
sys = nlhw(Data,sys0)
sys = nlhw(___,Options)

Описание

пример

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--');

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

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 которых th запись задает порядки и задержку передаточной функции от j th вход к i th вывод.

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

Объект 'pwlinear' или pwlinear
(значение по умолчанию)
Кусочная линейная функция
Объект 'sigmoidnet' или sigmoidnetСигмоидальная сеть
Объект 'wavenet' или wavenetСеть Wavelet
Объект '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Сеть Wavelet
Объект 'saturation' или saturationНасыщение
Объект 'deadzone' или deadzoneМертвая зона
Объект 'poly1d' или poly1dОдномерный полином
Объект 'unitgain' или [] или unitgainМодульное усиление
Объект customnetПользовательская сеть — Подобно sigmoidnet, но с пользовательской заменой для сигмоидальной функции.

Определение вектора символов создает объект средства оценки нелинейности с настройками по умолчанию. Используйте объектное представление вместо этого, чтобы сконфигурировать свойства средства оценки нелинейности.

OutputNL = sigmoidnet;
OutputNL.NumberOfUnits = 10;

Также используйте связанную входную функцию средства оценки нелинейности с Аргументами пары "имя-значение".

OutputNL = sigmoidnet('NumberOfUnits',10);

Для ny каналы вывода можно задать нелинейные средства оценки индивидуально для каждого выходного канала установкой OutputNL к ny-by-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) того, как хорошо ответ модели соответствует данным об оценке, выраженным как процент.

LossFcn

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

MSE

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

FPE

Итоговая ошибка прогноза для модели.

AIC

Необработанная мера по Критериям информации о Akaike (AIC) образцового качества.

AICc

Маленький объем выборки исправил AIC.

nAIC

Нормированный AIC.

BIC

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

Parameters

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

OptionsUsed

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

RandState

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

DataUsed

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

Поле Описание
Name

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

Type

Тип данных.

Length

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

Ts

'SampleTime' .

InterSample

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

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

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

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

InputOffset

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

OutputOffset

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

Termination

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

Поле Описание
WhyStop

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

Iterations

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

FirstOrderOptimality

- норма вектора просмотра градиента, когда алгоритм поиска останавливается.

FcnCount

Число раз целевая функция было названо.

UpdateNorm

Норма вектора просмотра градиента в последней итерации. Не использованный, когда методом поиска является 'lsqnonlin' или 'fmincon'.

LastImprovement

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

Algorithm

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

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

Для получения дополнительной информации см. Отчет Оценки.

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

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