exponenta event banner

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

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

  • Полиномиальная модель «вход-выход» структуры «Ошибка вывода» (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около-nu матрицы, i-j-я запись которых определяет порядки и задержку передаточной функции от j-го входа к i-му выходу.

B

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

F

Полином F линейного блока в структуре модели, заданный как массив ячеек nyоколо-nu элементы, где ny - количество выходов и nu - количество входов. Элемент F{i,j} - вектор строки, представляющий многочлен знаменателя для j-й вход в 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- по 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- по 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(Панель инструментов системы управления) для преобразования единиц времени без изменения поведения системы.

По умолчанию: '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

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

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

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

sys(:,'controls')

По умолчанию: структура без полей

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

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

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

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

sys('measurement',:)

По умолчанию: структура без полей

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), внутренняя переменная, является выходом блока входной нелинейности и имеет тот же размер, что и u (t).

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

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

    B и F аналогичны многочленам в линейной модели ошибки вывода. Дополнительные сведения о моделях выходных ошибок см. в разделе Что такое модели полиномов?.

    Для 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, она называется моделью Хаммерштейна. Аналогично, когда модель содержит только выходную нелинейность 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