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],'idSigmoidNetwork','idDeadZone');

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

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

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

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

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

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

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

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,'idSaturation',[],'InputName','Control');

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

свернуть все

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

Размерности Orders:

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

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

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

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

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

'idPiecewiseLinear' или idPiecewiseLinear объект
(значение по умолчанию)
Кусочная линейная функция
'idSigmoidNetwork' или idSigmoidNetwork объектСигмоидальная сеть
'idWaveletNetwork' или idWaveletNetwork объектСеть Wavelet
'idSaturation' или idSaturation объектНасыщение
'idDeadZone' или idDeadZone объектМертвая зона
'idPolynomial1D' или idPolynomial1D объектОдномерный полином
'idUnitGain' или [] илиidUnitGain объектМодульное усиление
idCustomNetwork объектПользовательская сеть — Подобно idSigmoidNetwork, но с пользовательской заменой для сигмоидальной функции.

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

InputNL = idWaveletNetwork;
InputNL.NumberOfUnits = 10;

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

InputNL = idWaveletNetwork('NumberOfUnits',10);

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

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

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

'idPiecewiseLinear' или idPiecewiseLinear объект
(значение по умолчанию)
Кусочная линейная функция
'idSigmoidNetwork' или idSigmoidNetwork объектСигмоидальная сеть
'idWaveletNetwork' или idWaveletNetwork объектСеть Wavelet
'idSaturation' или idSaturation объектНасыщение
'idDeadZone' или idDeadZone объектМертвая зона
'idPolynomial1D' или idPolynomial1D объектОдномерный полином
'idUnitGain' или [] илиidUnitGain объектМодульное усиление
idCustomNetwork объектПользовательская сеть — Подобно idSigmoidNetwork, но с пользовательской заменой для сигмоидальной функции.

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

OutputNL = idSigmoidNetwork;
OutputNL.NumberOfUnits = 10;

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

OutputNL = idSigmoidNetwork('NumberOfUnits',10);

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

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

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

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

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

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

Аргументы name-value

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

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

Свойства

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

nb, nf, nk

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

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

B

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

F

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

Bfree

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

Ffree

Опция, чтобы зафиксировать или освободить параметры полинома F в виде массива ячеек ny- nu элементы, где ny количество выходных параметров и nu количество входных параметров. Элемент Ffree(i,j) вектор-строка, представляющий полином числителя для jвход th к ith выводят передаточную функцию. Ffree(i,j) = false вызывает числитель линейной передаточной функции между входом j и выход i быть зафиксированным к F(i,j). Программное обеспечение соблюдает Ffree спецификация, только если полином F содержит конечные значения.

InputNonlinearity

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

'idPiecewiseLinear' или idPiecewiseLinear объект
(значение по умолчанию)
Кусочная линейная функция
'idSigmoidNetwork' или idSigmoidNetwork объектСигмоидальная сеть
'idWaveletNetwork' или idWaveletNetwork объектСеть Wavelet
'idSaturation' или idSaturation объектНасыщение
'idDeadZone' или idDeadZone объектМертвая зона
'idPolynomial1D' или idPolynomial1D объектОдномерный полином
'idUnitGain' или [] илиidUnitGain объектМодульное усиление
idCustomNetwork объектПользовательская сеть — Подобно idSigmoidNetwork, но с пользовательской заменой для сигмоидальной функции.

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

InputNonlinearity = idWaveletNetwork;
InputNonlinearity.NumberOfUnits = 10;

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

InputNonlinearity = idWaveletNetwork('NumberOfUnits',10);

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

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

OutputNonlinearity

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

'idPiecewiseLinear' или idPiecewiseLinear объект
(значение по умолчанию)
Кусочная линейная функция
'idSigmoidNetwork' или idSigmoidNetwork объектСигмоидальная сеть
'idWaveletNetwork' или idWaveletNetwork объектСеть Wavelet
'idSaturation' или idSaturation объектНасыщение
'idDeadZone' или idDeadZone объектМертвая зона
'idPolynomial1D' или idPolynomial1D объектОдномерный полином
'idUnitGain' или [] илиidUnitGain объектМодульное усиление
idCustomNetwork объектПользовательская сеть — Подобно idSigmoidNetwork, но с пользовательской заменой для сигмоидальной функции.

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

OutputNonlinearity = idSigmoidNetwork;
OutputNonlinearity.NumberOfUnits = 10;

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

OutputNonlinearity = idSigmoidNetwork('NumberOfUnits',10);

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

Ts

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

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

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

TimeUnit

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

Значение по умолчанию: '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.

  • В качестве альтернативы задайте состояния вручную.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2021b

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