idCustomNetwork

Пользовательская сетевая функция для нелинейного ARX и моделей Хаммерстайна-Винера

Описание

idCustomNetwork возразите реализует пользовательскую сетевую функцию и нелинейная функция отображения для оценки нелинейного ARX и Нелинейных моделей Хаммерстайна-Винера. Функция отображения, которая также упоминается как nonlinearity, использует комбинацию линейных весов, смещения и нелинейной функции, чтобы вычислить ее выход. Нелинейная функция содержит пользовательские модульные функции, которые работают с гребенчатой комбинацией (взвесил линейную сумму) входных параметров.

Математически, idCustomNetwork функция, которая сопоставляет входные параметры m X (t) = [x (t 1), x 2 (t), …, xm (t)]T к скалярному выходу y (t) с помощью следующего отношения:

y(t)=y0+(Χ(t)X¯)TPL+S(Χ(t))

Здесь:

  • X (t) является m-by-1 вектор из входных параметров или regressors, со средним значением Χ¯.

  • y0 является выходным смещением, скаляром.

  • P является m-by-p матрица проекции, где m является количеством регрессоров и является p, количество линейных весов. m должен быть больше или быть равен p.

  • L является p-by-1 вектор из весов.

  • S (X) является суммой расширенных и переведенных пользовательских модульных функций. Общее количество модульных функций упоминается как n number of units сети.

Поскольку определение модульной функции называет S (X), смотрите Больше О.

Используйте idCustomNetwork как значение OutputFcn свойство idnlarx модель или InputNonlinearity и OutputLinearity свойства idnlhw объект. Например, задайте idCustomNetwork когда вы оцениваете idnlarx модель со следующей командой.

sys = nlarx(data,regressors,idCustomNetwork)
Когда nlarx оценивает модель, она по существу оценивает параметры idCustomNetwork функция.

Можно сконфигурировать idCustomNetwork функция, чтобы отключить компоненты и зафиксировать параметры. Не использовать линейный набор компонента LinearFcn.Use к false. Чтобы не использовать смещение, установите Offset.Use к false. Чтобы задать известные значения для линейной функции и смещения, установите их Value атрибуты непосредственно и набор соответствующий Free атрибуты к FalseИспользование evaluate вычислить выход функции для данного вектора из входных параметров.

Создание

Описание

пример

C = idCustomNetwork(H) создает нелинейный объект отображения с пользовательской модульной функцией использование указателя на функцию HH должен указать на функцию формы [f,g,a] = function_name(x), где f значение функции, g = df/dx, и a указывает на модульную функцию активная область значений [-a a] где g является значительно ненулевым. Модели Хаммерстайна-Винера требуют, чтобы ваша пользовательская функция имела только один вход и один выход.

S = idCustomNetwork(H,numUnits) задает количество модульных функций numUnits.

S = idCustomNetwork(H,numUnits,UseLinearFcn) задает, использует ли функция линейную функцию в качестве субкомпонента.

пример

S = idCustomNetwork(H,numUnits,UseLinearFcn,UseOffset) задает, использует ли функция термин смещения параметр y0.

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

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

Указатель на функцию, который указывает на пользовательскую функцию формы [f,g,a] = function_name(x)В виде указателя на функцию. Функция, что H точки к должны быть векторизованы. Таким образом, для вектора или матрицы x выходные аргументы f и g должны иметь тот же размер как x, когда вычислено поэлементно.

Этот аргумент устанавливает C.NonlinearFcn.UnitFcn свойство.

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

Этот аргумент устанавливает C.NonlinearFcn.NumberOfUnits свойство.

Опция, чтобы использовать субкомпонент линейной функции в виде true или false. Этот аргумент устанавливает значение C.LinearFcn.Use свойство.

Опция, чтобы использовать термин смещения в виде true или false. Этот аргумент устанавливает значение C.Offset.Use свойство.

Свойства

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

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

  • Name — Имена входных сигналов в виде 1 строкой m или символьным массивом, где m является количеством входных параметров

  • Mean — Среднее значение входных сигналов в виде числового скаляра

  • Range — Области значений входных сигналов в виде 2 m числовым массивом, который содержит минимальные и максимальные значения

Информация о выходном сигнале в виде специфичных для свойства значений. Output свойства следующие:

  • Name — Имя выходного сигнала в виде строки или символьного массива

  • Mean — Среднее значение выходного сигнала в виде числового скаляра

  • Range — Область значений выходного сигнала в виде 2 1 числового массива, который содержит минимальные и максимальные значения.

Параметры линейной функции в виде следуют:

  • Use — Опция, чтобы использовать линейную функцию в пользовательской сети в виде логического скаляра. Значением по умолчанию является true.

  • Value — Линейные веса, которые составляют L' в виде 1 p вектором.

  • InputProjection — Введите матрицу проекции P в виде m-by-p матрица, которая преобразовывает детрендированный входной вектор длины m в вектор из длины p. Поскольку Хаммерстайн-Винер моделирует, InputProjection равно 1.

  • Free — Опция, чтобы обновить записи Value во время оценки в виде 1 p логическим вектором. Программное обеспечение соблюдает Free спецификация, только если начальное значение Value isfinite. Значением по умолчанию является true.

  • Minimum — Минимум привязал ValueВ виде 1 p вектором. Если Minimum задан с конечным значением и начальным значением Value конечно, затем программное обеспечение осуществляет тот минимум, связанный во время оценки модели.

  • Maximum — Максимум привязал ValueВ виде 1 p вектором. Если Maximum задан с конечным значением и начальным значением Value конечно, затем программное обеспечение осуществляет тот максимум, связанный во время оценки модели.

  • SelectedInputIndex — Индексы idCustomNetwork входные параметры (см. Input.Name) это используется в качестве входных параметров к линейной функции в виде 1 nr целочисленным вектором, где nr является количеством входных параметров. Для нелинейных моделей ARX, RegressorUsage свойство определяет эти индексы. Поскольку Хаммерстайн-Винер моделирует, SelectedInputIndex всегда 1.

Программное обеспечение вычисляет выход LinearFcn как FL(t)=(Χ(t)X¯)TPL).

Параметры термина смещения в виде следуют:

  • Use — Опция, чтобы использовать смещение в пользовательской сети в виде логического скаляра. Значением по умолчанию является true.

  • Value — Возместите значение в виде скаляра.

  • Free — Опция, чтобы обновить Value во время оценки в виде логического скаляра. Программное обеспечение соблюдает Free спецификация false только если значение Value isfinite. Значением по умолчанию является true.

  • Minimum — Минимум привязал ValueВ виде числового скаляра или –Inf. Если Minimum задан с конечным значением и значением Value конечно, затем программное обеспечение осуществляет тот минимум, связанный во время оценки модели. Значением по умолчанию является -Inf.

  • Maximum — Максимум привязал ValueВ виде числового скаляра или Inf. Если Maximum задан с конечным значением и начальным значением Value конечно, затем программное обеспечение осуществляет тот максимум, связанный во время оценки модели. Значением по умолчанию является Inf.

Параметры нелинейной функции в виде следуют:

  • UnitFcn — Указатель на функцию, который указывает на пользовательскую функцию формы [f,g,a] = function_name(x). Функция, что UnitFcn точки к должны быть векторизованы. Таким образом, для вектора или матрицы x выходные аргументы f и g должны иметь тот же размер как x, когда вычислено поэлементно.

  • NumberOfUnits — Количество модулей в виде положительного целого числа. NumberOfUnits определяет номер n пользовательских функций.

  • Parameters — Параметры idCustomNetworkВ виде в следующей таблице:

    Имя поляОписаниеЗначение по умолчанию
       
    InputProjection

    Матрица проекции Q в виде m-by-q матрица. Q преобразовывает детрендированный входной вектор (XX¯) из длины m в вектор из длины q. Как правило, Q имеет те же размерности как линейная матрица проекции P. В этом случае q равен p, который является количеством линейных весов.

    Поскольку Хаммерстайн-Винер моделирует, InputProjection равно 1.

    []
    OutputCoefficient

    пользовательские функциональные выходные коэффициенты si в виде n-by-1 вектор.

    []
    Translation

    Матрица перевода в виде n-by-q матрица векторов-строк перевода ci.

    []
    Dilation

    Коэффициенты расширения bi в виде n-by-1 вектор.

    []

  • Free — Опция, чтобы оценить параметры в виде логического скаляра. Если все параметры имеют конечные значения, такой как тогда, когда idCustomNetwork объект соответствует ранее предполагаемой модели, затем установка Free к false заставляет параметры нелинейного функционального S (X) оставаться неизменными во время оценки. Значением по умолчанию является true.

  • SelectedInputIndex — Индексы idCustomNetwork входные параметры (см. Input.Name) это используется в качестве входных параметров к нелинейной функции в виде 1 nr целочисленным вектором, где nr является количеством входных параметров. Для нелинейных моделей ARX, RegressorUsage свойство определяет эти индексы. Поскольку Хаммерстайн-Винер моделирует, SelectedInputIndex всегда 1.

Примеры

свернуть все

Загрузите данные

load iddata1 z1

Создайте customnet возразите, что использует gaussunit как модульная функция.

H = @gaussunit;
C = idCustomNetwork(@gaussunit);

Установите свойства C использование записи через точку. Зафиксируйте значение смещения к 0,2 и определите номер модульных функций к 15.

C.Offset.Value = 0.2;
C.Offset.Free = false;
C.NonlinearFcn.NumberOfUnits = 15
C = 
Custom Network

 Nonlinear Function: Custom Network with 15 units and "gaussunit" unit function
 Linear Function: uninitialized
 Output Offset: fixed to 0.2

           Input: 'Function inputs'
          Output: 'Function output'
       LinearFcn: 'Linear function parameters'
    NonlinearFcn: 'Custom units and their parameters'
          Offset: 'Offset parameters'

Создайте регрессоры модели.

Reg = linearRegressor([z1.OutputName z1.InputName],{1:4 0:4});

Оцените нелинейную модель ARX.

sys = nlarx(z1,Reg,C)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Custom Network with 15 units
Sample time: 0.1 seconds

Status:                                          
Estimated using NLARX on time domain data "z1".  
Fit to estimation data: 76.15% (prediction focus)
FPE: 4.311, MSE: 1.104

Загрузите данные.

load throttledata

Создайте customnet объект C это использует gaussunit как модульная функция. Включайте входные параметры, которые задают 10 модулей и исключают линейную функцию и смещение.

H = @gaussunit;
C = idCustomNetwork(@gaussunit,10,false,false)
C = 
Custom Network

 Nonlinear Function: Custom Network with 10 units and "gaussunit" unit function
 Linear Function: not in use
 Output Offset: not in use

           Input: 'Function inputs'
          Output: 'Function output'
       LinearFcn: 'Linear function parameters'
    NonlinearFcn: 'Custom units and their parameters'
          Offset: 'Offset parameters'

Оцените Модель Хаммерстайна-Винера использующие порядки [4 4 1], никакая входная нелинейность и C как выходная нелинейность.

sys = nlhw(ThrottleData,[4 4 1],[],C)
sys =
Hammerstein-Wiener model with 1 output and 1 input
 Linear transfer function corresponding to the orders nb = 4, nf = 4, nk = 1
 Input nonlinearity: absent
 Output nonlinearity: Custom Network with 10 units and "gaussunit" unit function
Sample time: 0.01 seconds

Status:                                                 
Estimated using NLHW on time domain data "ThrottleData".
Fit to estimation data: 76.57%                          
FPE: 77.59, MSE: 60.55

Больше о

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

Алгоритмы

idCustomNetwork использует итеративный поисковый метод для оценки параметров.

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

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

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

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

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