idnlhw

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

Синтаксис

sys = idnlhw(Orders)
sys = idnlhw(Orders,InputNL,OutputNL)
sys = idnlhw(Orders,InputNL,OutputNL,Name,Value)
sys = idnlhw(LinModel)
sys = idnlhw(LinModel,InputNL,OutputNL)
sys = idnlhw(LinModel,InputNL,OutputNL,Name,Value)

Описание

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

sys = idnlhw(Orders,InputNL,OutputNL) использование InputNL и OutputNL как средства оценки нелинейности ввода и вывода, соответственно.

sys = idnlhw(Orders,InputNL,OutputNL,Name,Value) задает дополнительные атрибуты структуры модели idnlhw с помощью одного или нескольких аргументов пары Name,Value.

sys = idnlhw(LinModel) использует линейную модель LinModel, чтобы задать порядки модели и кусочные линейные функции по умолчанию для средств оценки нелинейности ввода и вывода.

sys = idnlhw(LinModel,InputNL,OutputNL) задает средства оценки нелинейности ввода и вывода для модели.

sys = idnlhw(LinModel,InputNL,OutputNL,Name,Value) задает дополнительные атрибуты структуры модели idnlhw с помощью одного или нескольких аргументов пары Name,Value.

Описание объекта

idnlhw представляет модель Хаммерстайна-Винера. Структура Хаммерстайна-Винера представляет линейную модель с нелинейностью ввода - вывода.

Используйте команду nlhw, чтобы и создать объект idnlhw и оценить параметры модели.

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

Для свойств объектов idnlhw смотрите Свойства.

Примеры

свернуть все

Создайте модель Хаммерзайн-Винера с nb и nf = 2 и nk = 1.

 m = idnlhw([2 2 1]);

m имеет кусочную линейную нелинейность ввода и вывода.

m = idnlhw([2 2 1],'sigmoidnet','deadzone');

Вышеупомянутое эквивалентно:

m = idnlhw([2 2 1],'sig','dead');

Заданная нелинейность имеет настройку по умолчанию.

m = idnlhw([2 2 1],sigmoidnet('num',5),deadzone([-1,2]),'InputName','Volts','OutputName','Time');

Создайте Винеровскую модель (никакая входная нелинейность).

m = idnlhw([2 2 1],[],'saturation');

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

load iddata1;
m = nlhw(z1,m);

Создайте модель полинома ввода - вывода структуры OE.

B = [0.8 1];
F = [1 -1.2 0.5];
LinearModel = idpoly(1,B,1,1,F,'Ts',0.1);

Создайте модель Хаммерстайна-Винера использование модели OE как ее линейный компонент.

m1 = idnlhw(LinearModel,'saturation',[],'InputName','Control');

Входные параметры

свернуть все

Порядок и задержки линейной передаточной функции подсистемы, заданной как вектор [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.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Используйте аргументы Name,Value, чтобы задать дополнительные свойства моделей idnlhw во время образцового создания. Например, m = idnlhw([2 3 1],'pwlinear','wavenet','InputName','Volts','Ts',0.1) создает объект модели idnlhw с входным средством оценки нелинейности 'pwlinear', выходное средство оценки нелинейности 'wavenet', входное имя Volts и шаг расчета секунд 0.1.

Свойства

Свойства объектов idnlhw включают:

nb, nf, nk

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

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

B

Полином B линейного блока в образцовой структуре, заданной как массив ячеек ny-by-nu элементы, где ny является количеством выходных параметров и nu, является количеством входных параметров. Элемент B{i,j} является вектором - строкой, представляющим полином числителя для j th вход к i th выходная передаточная функция. Элемент содержит начальные нули nk, где nk является количеством входных задержек.

F

Полином F линейного блока в образцовой структуре, заданной как массив ячеек ny-by-nu элементы, где ny является количеством выходных параметров и nu, является количеством входных параметров. element F{i,j} является вектором - строкой, представляющим полином знаменателя для j th вход к i th выходная передаточная функция.

InputNonlinearity

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

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

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

InputNonlinearity = wavenet;
InputNonlinearity.NumberOfUnits = 10;

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

InputNonlinearity = wavenet('NumberOfUnits',10);

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

Значение по умолчанию: 'pwlinear'

OutputNonlinearity

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

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

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

OutputNonlinearity = sigmoidnet;
OutputNonlinearity.NumberOfUnits = 10;

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

OutputNonlinearity = sigmoidnet('NumberOfUnits',10);

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

Значение по умолчанию: 'pwlinear'

LinearModel

Линейная модель в линейном блоке образцовой структуры, представленной как объект idpoly. Это свойство доступно только для чтения.

Report

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

  • Метод оценки

  • Опции оценки

  • Поисковые условия завершения

  • Совпадение данных оценки

Содержимое Report не важно, если модель была создана конструкцией.

m = idnlhw([2 2 1]);
m.Report.OptionsUsed
ans =

     []

Если вы используете nlhw, чтобы оценить модель, поля Report содержат информацию о данных об оценке, опциях и результатах.

load iddata1;
m = nlhw(z1,[2 2 1],[],'pwlinear');
m.Report.OptionsUsed
Option set for the nlhw command:

    InitialCondition: 'zero'
             Display: 'off'
      Regularization: [1x1 struct]
        SearchMethod: 'auto'
        SearchOption: [1x1 idoptions.search.identsolver]
        OutputWeight: 'noise'
            Advanced: [1x1 struct]

Report является свойством только для чтения.

Для получения дополнительной информации об этом свойстве и как использовать его, см. Выходные аргументы на странице с описанием nlhw и Отчет Оценки.

TimeVariable

Независимая переменная для входных параметров, выходных параметров, и — когда доступный — внутренние состояния, заданные как вектор символов.

Значение по умолчанию: 't'

NoiseVariance

Шумовое отклонение (ковариационная матрица) образцовых инноваций e.
Присваиваемым значением является ny-by-ny матрица.
Обычно устанавливайте автоматически алгоритмом оценки.

Ts

'SampleTime' . Ts является положительной скалярной величиной, представляющей период выборки. Это значение выражается в модуле, заданном свойством TimeUnit модели.

Изменение этого свойства не дискретизирует или передискретизирует модель.

Значение по умолчанию: 1

TimeUnit

Модули для переменной времени, шаг расчета Ts и любые задержки модели, заданной как одно из следующих значений:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

Значение по умолчанию: 'seconds'

InputName

Введите названия канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно входа, например, 'controls'.

  • Массив ячеек из символьных векторов Модели мультивхода For.

Также используйте автоматическое векторное расширение, чтобы присвоить входные имена для мультивходных моделей. Например, если sys является 2D входной моделью, введите:

sys.InputName = 'controls';

Входные имена автоматически расширяются до {'controls(1)';'controls(2)'}.

Когда вы оцениваете модель с помощью объекта iddata, data, программное обеспечение автоматически устанавливает InputName на data.InputName.

Можно использовать краткое обозначение u, чтобы относиться к свойству InputName. Например, sys.u эквивалентен sys.InputName.

Входные названия канала имеют несколько использования, включая:

  • Идентификация каналов на образцовом отображении и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Значение по умолчанию: '' для всех входных каналов

InputUnit

Введите модули канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно входа, например, 'seconds'.

  • Массив ячеек из символьных векторов Модели мультивхода For.

Используйте InputUnit, чтобы отслеживать модули входного сигнала. InputUnit не имеет никакого эффекта на поведение системы.

Значение по умолчанию: '' для всех входных каналов

InputGroup

Введите группы канала. Свойство InputGroup позволяет вам присвоить входные каналы систем MIMO в группы и обратиться к каждой группе по наименованию. Задайте входные группы как структуру. В этой структуре имена полей являются названиями группы, и значения полей являются входными каналами, принадлежащими каждой группе. Например:

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

создает входные группы под названием controls и noise, которые включают входные каналы 1, 2 и 3, 5, соответственно. Можно затем извлечь подсистему от входных параметров controls до всего выходного использования:

sys(:,'controls')

Значение по умолчанию: Struct без полей

OutputName

Выведите названия канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно вывода. Например, 'measurements'.

  • Массив ячеек из символьных векторов For модели мультивывода.

Также используйте автоматическое векторное расширение, чтобы присвоить выходные имена для мультивыходных моделей. Например, если sys является 2D выходной моделью, введите:

sys.OutputName = 'measurements';

Выходные имена автоматически расширяются до {'measurements(1)';'measurements(2)'}.

Когда вы оцениваете модель с помощью объекта iddata, data, программное обеспечение автоматически устанавливает OutputName на data.OutputName.

Можно использовать краткое обозначение y, чтобы относиться к свойству OutputName. Например, sys.y эквивалентен sys.OutputName.

Выходные названия канала имеют несколько использования, включая:

  • Идентификация каналов на образцовом отображении и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Значение по умолчанию: '' для всех выходных каналов

OutputUnit

Выведите модули канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно вывода. Например, 'seconds'.

  • Массив ячеек из символьных векторов For модели мультивывода.

Используйте OutputUnit, чтобы отслеживать модули выходного сигнала. OutputUnit не имеет никакого эффекта на поведение системы.

Значение по умолчанию: '' для всех выходных каналов

OutputGroup

Выведите группы канала. Свойство OutputGroup позволяет вам присвоить выходные каналы систем MIMO в группы и обратиться к каждой группе по наименованию. Задайте выходные группы как структуру. В этой структуре имена полей являются названиями группы, и значения полей являются выходными каналами, принадлежащими каждой группе. Например:

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

создает выходные группы под названием temperature и measurement, которые включают выходные каналы 1, и 3, 5, соответственно. Можно затем извлечь подсистему от всех входных параметров до measurement использование выходных параметров:

sys('measurement',:)

Значение по умолчанию: Struct без полей

Name

Имя системы, заданное как вектор символов. Например, 'system_1'.

Значение по умолчанию: ''

Notes

Любой текст, который вы хотите сопоставить с системой, сохраненной как строка или массив ячеек из символьных векторов. Свойство хранит, какой бы ни тип данных вы обеспечиваете. Например, если sys1 и sys2 являются моделями динамической системы, можно установить их свойства Notes можно следующим образом:

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

Значение по умолчанию: [0×1 string]

UserData

Любой тип данных вы хотите сопоставить с системой, заданной как любой тип данных MATLAB®.

Значение по умолчанию: []

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

свернуть все

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

Больше о

свернуть все

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

Эта блок-схема представляет структуру модели Хаммерстайна-Винера:

Где,

  • f является нелинейной функцией, которая преобразовывает входные данные u (t) как w (t) = f (u (t)).

    w (t), внутренняя переменная, является выводом блока Input Nonlinearity и имеет ту же размерность как u (t).

  • B/F является линейной передаточной функцией, которая преобразовывает w (t) как x (t) = (B/F) w (t).

    x (t), внутренняя переменная, является выводом блока Linear и имеет ту же размерность как y (t).

    B и F подобны полиномам в линейной модели Output-Error. Для получения дополнительной информации о моделях Output-Error, смотрите то, Что Полиномиальные Модели?.

    Для ny выходные параметры и входные параметры nu, линейный блок является матрицей передаточной функции, содержащей записи:

    Bj,i(q)Fj,i(q)

    где j = 1,2,...,ny и i = 1,2,...,nu.

  • h является нелинейной функцией, которая сопоставляет вывод линейного блока x (t) к системе вывод y (t) как y (t) = h (x (t)).

Поскольку действия f на входном порте линейного блока, эта функция вызвана входная нелинейность. Точно так же, потому что действия h на выходном порте линейного блока, эта функция вызвана выходная нелинейность. Если ваша система содержит несколько вводов и выводов, необходимо задать функции f и h для каждого сигнала ввода и вывода. Вы не должны включать и вход и выходную нелинейность в образцовой структуре. Когда модель содержит только входную нелинейность f, это называется моделью Hammerstein. Точно так же, когда модель содержит только выходную нелинейность h, это называется Винеровской моделью.

Программное обеспечение вычисляет модель Хаммерстайна-Винера вывод y на трех этапах:

  1. Вычислите w (t) = f (u (t)) от входных данных.

    w (t) является входом к линейной передаточной функции B/F.

    Входная нелинейность является статической функцией (без памяти), где значение вывода данное время t зависит только от входного значения во время t.

    Можно сконфигурировать входную нелинейность как сигмоидальную сеть, сеть вейвлета, насыщение, мертвую зону, кусочную линейную функцию, одномерный полином или пользовательскую сеть. Можно также удалить входную нелинейность.

  2. Вычислите вывод линейного блока с помощью w (t) и начальные условия: x (t) = (B/F) w (t).

    Можно сконфигурировать линейный блок путем определения порядков числителя B и знаменатель F.

  3. Вычислите модель, выведенную путем преобразования вывода линейного блока x (t) с помощью нелинейного функционального h в качестве y (t) = h (x (t)).

    Подобно входной нелинейности выходная нелинейность является статической функцией. Можно сконфигурировать выходную нелинейность таким же образом как входную нелинейность. Можно также удалить выходную нелинейность, такую что y (t) = x (t).

Получившиеся модели являются объектами idnlhw, которые хранят все данные модели, включая средства оценки нелинейности и параметры модели. Для получения дополнительной информации об этих объектах, смотрите Нелинейные Образцовые Структуры.

Определение состояний idnlhw

Состояния модели Хаммерстайна-Винера соответствуют состояниям линейного блока в образцовой структуре. Линейный блок содержит все динамические элементы модели. Если линейный блок не является структурой пространства состояний, состояния заданы как те из модели Mss, где Mss = idss(Model.LinearModel) и Model являются объектом idnlhw.

Состояния требуются для симуляции, прогноза и линеаризации моделей Хаммерстайна-Винера. Задавать начальные состояния:

  • Используйте findstates, чтобы искать значения состояния для симуляции и прогноза с sim, predict и compare.

  • Используйте findop при линеаризации модели с linearize.

  • Также задайте состояния вручную.

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