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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. 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-й ввод которых задает порядки и задержку передаточной функции от j-го входа до i-го выхода.

B

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

F

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

InputNonlinearity

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

'pwlinear' или pwlinear объект
(по умолчанию)
Кусочно-линейная функция
'sigmoidnet' или sigmoidnet объектСигмоидная сеть
'wavenet' или wavenet объектВейвлет
'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 объектВейвлет
'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

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

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

По умолчанию: 1

TimeUnit

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

По умолчанию: 'seconds'

InputName

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

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

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

Кроме того, используйте автоматическое расширение вектора, чтобы назначить входные имена для мультивходов. Для примера, если sys является моделью с двумя входами, введите:

sys.InputName = 'controls';

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

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

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

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

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

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

  • Определение точек соединения при соединении моделей

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

InputUnit

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

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

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

Использование InputUnit отслеживать модули входных сигналов. InputUnit не влияет на поведение системы.

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

InputGroup

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

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

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

sys(:,'controls')

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

OutputName

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

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

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

Кроме того, используйте автоматическое расширение вектора, чтобы назначить имена выходов для мультивыходов. Для примера, если sys является двухвыпускной моделью, введите:

sys.OutputName = 'measurements';

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

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

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

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

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

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

  • Определение точек соединения при соединении моделей

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

OutputUnit

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

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

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

Использование OutputUnit отслеживать выход модулей сигнала. OutputUnit не влияет на поведение системы.

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

OutputGroup

Выходы каналов. The 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 (<reservedrangesplaceholder5>) как w (<reservedrangesplaceholder3>) = f (u (<reservedrangesplaceholder0>)).

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

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

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

    B и F подобны полиномам в линейной модели 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 (<reservedrangesplaceholder6>) использование нелинейной функции h как y (<reservedrangesplaceholder3>) = h (x (<reservedrangesplaceholder0>)).

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

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

Определение idnlhw Государства

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

Состояния необходимы для симуляции, предсказания и линеаризации моделей Гаммерштейна-Винера. Чтобы задать начальные состояния:

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

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

  • Кроме того, задайте состояния вручную.

Введенный в R2007a