idnlarx

Нелинейная модель ARX

Синтаксис

sys = idnlarx(Orders)
sys = idnlarx(Orders,Nonlinearity)
sys = idnlarx(Orders,Nonlinearity,Name,Value)
sys = idnlarx(LinModel)
sys = idnlarx(LinModel,Nonlinearity)
sys = idnlarx(LinModel,Nonlinearity,Name,Value)

Описание

sys = idnlarx(Orders) создает нелинейную модель ARX с заданными порядками с помощью средства оценки нелинейности сети вейвлета по умолчанию.

sys = idnlarx(Orders,Nonlinearity) задает средство оценки нелинейности для модели.

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

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

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

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

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

idnlarx представляет нелинейную модель ARX, которая является расширением линейной структуры ARX и содержит линейные и нелинейные функции. Для получения дополнительной информации смотрите, что Нелинейная Модель ARX Расширяет Линейную Структуру ARX.

Используйте nlarx команда к оба создает idnlarx возразите и оцените параметры модели.

Можно также использовать idnlarx конструктор, чтобы создать нелинейную модель ARX и затем оценить использование параметров модели nlarx или pem.

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

Примеры

свернуть все

m = idnlarx([2 2 1]);

Создайте нелинейную модель ARX с определенными порядками.

M = idnlarx([3 2 1]);

Сконфигурируйте модель со следующими настройками свойства:

  • Сигмоидальная сетевая нелинейность с настройками по умолчанию

  • Используйте входные параметры только в качестве нелинейных регрессоров

M.Nonlinearity = 'sigmoidnet';
M.NonlinearRegressors = 'input';
m = idnlarx([2 3 1],sigmoidnet('NumberOfUnits',15));
m = idnlarx([2 2 1],[]);

Задайте два пользовательских регрессора.

C = {'y1(t-1)^2','y1(t-2)*u1(t-3)'};

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

sys = idnlarx([0 0 0],'wavenet','CustomRegressors',C);

Создайте линейную модель ARX.

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

Создайте нелинейную модель ARX с помощью линейной модели ARX.

m1 = idnlarx(LinearModel);

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

свернуть все

Порядки модели и задержки определения настройки регрессора в виде 1 3 вектора, [na nb nk].

Для модели с ny каналы выхода и каналы входа nu:

  • na ny-by-ny матрица, где na(i,j) указывает, что количество регрессоров от j th выход раньше предсказывало i th выход.

  • nb ny-by-nu матрица, где nb(i,j) указывает, что количество регрессоров от j th вход раньше предсказывало i th выход.

  • nk ny-by-nu матрица, где nk(i,j) указывает, что задержка в j th вход раньше предсказывала i th выход.

na = [1 2; 2 3]
nb = [1 2 3; 2 3 1];
nk = [2 0 3; 1 0 5];

Данные об оценке для этой системы имеют три входных параметров (u1, u2, u3) и два выходных параметров (y1, y2). Полагайте, что регрессоры раньше предсказывали выход, y2(t):

  • Начиная с na(2,:) [2 3], способствующие регрессоры от выходных параметров:

    • y1(t-1) и y1(t-2)

    • y2(t-1), y2(t-2), и y2(t-3)

  • Начиная с nb(2,:) [2 3 1] и nk(2,:) [1 0 5], способствующие регрессоры от входных параметров:

    • u1(t-1) и u1(t-2)

    • u2(t), u2(t-1), и u2(t-2)

    • u3(t-5)

Примечание

Минимальной задержкой для регрессоров на основе выходных переменных всегда является 1, в то время как минимальную задержку для регрессоров на основе входных переменных диктует nkИспользование getreg просмотреть полный набор регрессоров, используемых нелинейной моделью ARX.

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

'wavenet' или wavenet объектСеть Wavelet
'sigmoidnet' или sigmoidnet объектСигмоидальная сеть
'treepartition' или treepartition объектДвоичное дерево
'linear' или [] или linear объектЛинейная функция
neuralnet объектНейронная сеть — Требует Deep Learning Toolbox™.
customnet объектПользовательская сеть — Подобно sigmoidnet, но с пользовательской заменой для сигмоидальной функции.

Для получения дополнительной информации смотрите Доступные Средства оценки Нелинейности для Нелинейных Моделей ARX.

Определение вектора символов, например, 'sigmoidnet', создает объект средства оценки нелинейности с настройками по умолчанию. В качестве альтернативы можно задать настройки средства оценки нелинейности двумя способами:

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

    NL = sigmoidnet('NumberOfUnits',10);
  • Создайте и измените объект средства оценки нелинейности по умолчанию.

    NL = sigmoidnet;
    NL.NumberOfUnits = 10;

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

Пример: 'sigmoidnet' задает сигмоидальную сетевую нелинейность с настройкой по умолчанию.

Пример: treepartition('NumberOfUnits',5) задает нелинейность двоичного дерева с 5 условия в расширении двоичного дерева.

Пример: [wavenet('NumberOfUnits',10);sigmoidnet] задает различные средства оценки нелинейности для двух выходных каналов.

Модель полинома ввода - вывода дискретного времени структуры ARX в виде idpoly модель. Создайте этот объект с помощью idpoly конструктор или оценка это с помощью arx команда.

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

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

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

Свойства

na, nb, nk

Порядки модели и задержки определения настройки регрессора в виде неотрицательных целых чисел.

Для модели с ny каналы выхода и каналы входа nu:

  • na ny-by-ny матрица, где na(i,j) указывает, что количество регрессоров от j th выход раньше предсказывало i th выход.

  • nb ny-by-nu матрица, где nb(i,j) указывает, что количество регрессоров от j th вход раньше предсказывало i th выход.

  • nk ny-by-nu матрица, где nk(i,j) указывает, что задержка в j th вход раньше предсказывала i th выход.

na = [1 2; 2 3]
nb = [1 2 3; 2 3 1];
nk = [2 0 3; 1 0 5];

Данные об оценке для этой системы имеют три входных параметров (u1, u2, u3) и два выходных параметров (y1, y2). Полагайте, что регрессоры раньше предсказывали выход, y2(t):

  • Начиная с na(2,:) [2 3], способствующие регрессоры от выходных параметров:

    • y1(t-1) и y1(t-2)

    • y2(t-1), y2(t-2), и y2(t-3)

  • Начиная с nb(2,:) [2 3 1] и nk(2,:) [1 0 5], способствующие регрессоры от входных параметров:

    • u1(t-1) и u1(t-2)

    • u2(t), u2(t-1), и u2(t-2)

    • u3(t-5)

Примечание

Минимальной задержкой для регрессоров на основе выходных переменных всегда является 1, в то время как минимальную задержку для регрессоров на основе входных переменных диктует nkИспользование getreg просмотреть полный набор регрессоров, используемых нелинейной моделью ARX.

CustomRegressors

Регрессоры создали из комбинаций вводов и выводов в виде одного из следующего:

  • Массив ячеек из символьных векторов. Например:

    • {'y1(t-3)^3','y2(t-1)*u1(t-3)','sin(u3(t-2))'}

    Каждый вектор символов должен представлять действительную формулу для регрессора, способствующего предсказанию выхода модели. Формула должна быть записана с помощью имен ввода и вывода и имени переменной времени как переменные.

  • Массив пользовательских объектов регрессора, созданного использования customreg или polyreg.

Для модели с ny выходные параметры задайте ny-by-1 массив ячеек customreg массивы объектов или ny-by-1 массив ячеек массива ячеек из символьных векторов.

Эти регрессоры в дополнение к стандартным регрессорам на основе na, nb, и nk.

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

NonlinearRegressors

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

  • 'all' — Все регрессоры

  • 'output' — Регрессоры, содержащие выходные переменные

  • 'input' — Регрессоры, содержащие входные переменные

  • 'standard' — Стандартные регрессоры

  • 'custom' — Пользовательские регрессоры

  • 'search' — Алгоритм оценки выполняет поиск лучшей комбинации регрессора. Эта опция должна быть применена ко всем выходным моделям одновременно.

  • [] — Никакие регрессоры

  • Вектор из индексов регрессора. Чтобы определить номер и порядок регрессоров, использовать getreg.

Для модели с несколькими выходными параметрами задайте массив ячеек элементов ny, где ny является количеством выходных каналов. Для каждого выхода задайте одну из предыдущих опций. В качестве альтернативы, чтобы применить то же подмножество регрессора ко всем выходным параметрам модели, задайте [] или любая из одних только опций вектора символов, например, 'standard'.

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

Nonlinearity

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

'wavenet' или wavenet объектСеть Wavelet
'sigmoidnet' или sigmoidnet объектСигмоидальная сеть
'treepartition' или treepartition объектДвоичное дерево
'linear' или [] или linear объектЛинейная функция
neuralnet объектНейронная сеть — Требует Deep Learning Toolbox.
customnet объектПользовательская сеть — Подобно sigmoidnet, но с пользовательской заменой для сигмоидальной функции.

Для получения дополнительной информации смотрите Доступные Средства оценки Нелинейности для Нелинейных Моделей ARX.

Определение вектора символов, например, 'sigmoidnet', создает объект средства оценки нелинейности с настройками по умолчанию. В качестве альтернативы можно задать настройки средства оценки нелинейности двумя способами:

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

    NL = sigmoidnet('NumberOfUnits',10);
  • Создайте и измените объект средства оценки нелинейности по умолчанию:

    NL = sigmoidnet;
    NL.NumberOfUnits = 10;

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

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

Report

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

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

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

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

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

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

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

     []

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

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

  IterativeWavenet: 'auto'
             Focus: 'prediction'
           Display: 'off'
    Regularization: [1x1 struct]
      SearchMethod: 'auto'
     SearchOptions: [1x1 idoptions.search.identsolver]
      OutputWeight: 'noise'
          Advanced: [1x1 struct]

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

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

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®.

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

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

свернуть все

Нелинейная модель ARX, возвращенная как idnlarx объект. Эта модель создается с помощью заданных порядков модели, средства оценки нелинейности и свойств.

Больше о

свернуть все

Нелинейная структура модели ARX

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

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

  1. Это вычисляет значения регрессора из текущих и прошлых входных значений и прошлых выходных данных.

    В самом простом случае регрессоры являются задержанными вводами и выводами, такими как u (t-1) и y (t-3). Подобные регрессоры называются стандартными регрессорами. Вы задаете стандартные регрессоры с помощью порядков модели и задержки. Для получения дополнительной информации смотрите Нелинейные Порядки Модели ARX и Задержку. Можно также задать пользовательские регрессоры, которые являются нелинейными функциями задержанных вводов и выводов. Например, u (t-1) *y (t-3). Чтобы создать набор полиномиальных регрессоров типа, использовать polyreg.

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

  2. Это сопоставляет регрессоры с выходом модели с помощью блока средства оценки нелинейности. Блок средства оценки нелинейности может включать линейные и нелинейные блоки параллельно. Например:

    F(x)=LT(xr)+d+g(Q(xr))

    Здесь, x является вектором из регрессоров, и r является средним значением регрессоров x. LT(x)+d выход блока линейной функции и является аффинным когда d ≠ 0. d является скалярным смещением. g(Q(xr)) представляет выход нелинейного функционального блока. Q является матрицей проекции, которая делает вычисления хорошо подготовленными. Точная форма F (x) зависит от вашего выбора средства оценки нелинейности. Можно выбрать из доступных средств оценки нелинейности, таких как сети древовидного раздела, сети вейвлета и многоуровневые нейронные сети. Можно также исключить или линейное или нелинейный функциональный блок от средства оценки нелинейности.

    При оценке нелинейной модели ARX программное обеспечение вычисляет значения параметра модели, такие как L, r, d, Q и другие параметры, задающие g.

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

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

Состояния idnlarx объект является упорядоченным списком задержанных переменных ввода и вывода, которые задают структуру модели. Тулбокс использует это определение состояний для создания вектора начального состояния, который используется в процессе моделирования и предсказание с sim, predict, и compare. Это определение также используется для линеаризации нелинейного использования моделей ARX linearize.

Этот тулбокс предоставляет несколько возможностей упрощать, как вы задаете начальные состояния. Например, можно использовать findstates и data2state искать значения состояния в приложениях предсказания и симуляции. Для линеаризации используйте findop. Можно также задать состояния вручную.

Состояния idnlarx модель зависит от максимальной задержки каждой переменной ввода и вывода, используемой регрессорами. Если переменная p имеет максимальную задержку выборок D, то она вносит элементы D в вектор состояния во время t: p (t-1), p (t-2)..., p (t-D).

Например, если у вас есть одно вход, одно выход idnlarx модель.

m = idnlarx([2 3 0],'wavenet','CustomRegressors',{'y1(t-10)*u1(t-1)'});

Эта модель имеет эти регрессоры.

getreg(m)
Regressors:
    y1(t-1)
    y1(t-2)
    u1(t)
    u1(t-1)
    u1(t-2)
    y1(t-10)*u1(t-1)

Регрессоры показывают что максимальная задержка выходной переменной y1 10 выборок и максимальная задержка входа u1 две выборки. Таким образом эта модель имеет в общей сложности 12 состояний:

X(t) = [y1(t-1),y2(t-2),…,y1(t-10),u1(t-1),u1(t-2)]

Примечание

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

Как другой пример, рассмотрите модель с 3 входами и с 2 выходами.

m = idnlarx([2 0 2 2 1 1 0 0; 1 0 1 5 0 1 1 0],[wavenet; linear]);

Эта модель имеет эти регрессоры.

getreg(m)
Regressors:
  For output 1:
    y1(t-1)
    y1(t-2)
    u1(t-1)
    u1(t-2)
    u2(t)
    u2(t-1)
    u3(t)
  For output 2:
    y1(t-1)
    u1(t-1)
    u2(t-1)
    u2(t-2)
    u2(t-3)
    u2(t-4)
    u2(t-5)

Максимальная задержка выходной переменной y1 две выборки. Эта задержка происходит в наборе регрессора для выхода 1. Максимальные задержки этих трех входных переменных равняются 2, 5, и 0, соответственно. Таким образом вектор состояния:

X(t) = [y1(t-1), y1(t-2), u1(t-1), u1(t-2), u2(t-1), 
            u2(t-2), u2(t-3), u2(t-4), u2(t-5)]

Переменные y2 и u3 не способствуйте вектору состояния, потому что максимальная задержка этих переменных является нулем.

Более простой способ определить состояния путем осмотра регрессоров состоит в том, чтобы использовать getDelayInfo, который возвращает максимальные задержки всех переменных I/O через все выходные параметры модели. Для нескольких - вводит несколько - выходная модель m, getDelayInfo возвращается:

maxDel = getDelayInfo(m)
maxDel = 1×5

     2     0     2     5     0

maxDel содержит максимальные задержки всех переменных ввода и вывода в порядке (y1, y2, u1, u2, u3). Общим количеством состояний модели является sum(maxDel) = 9.

Набор состояний для idnlarx модель не требуется, чтобы быть минимальной.

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