customnet

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

Описание

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

Математически, сеть customnet является функцией, которая сопоставляет входные параметры 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), смотрите Больше О.

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

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

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

Создание

Описание

пример

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

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

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

пример

S = customnet(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 — Индексы customnet входные параметры (см. 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 — Параметры customnetВ виде в следующей таблице:

    Имя поляОписаниеЗначение по умолчанию
       
    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 — Опция, чтобы оценить параметры в виде логического скаляра. Если все параметры имеют конечные значения, такой как тогда, когда customnet объект соответствует ранее предполагаемой модели, затем установка Free к false заставляет параметры нелинейного функционального S (X) оставаться неизменными во время оценки. Значением по умолчанию является true.

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

Примеры

свернуть все

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

load iddata1 z1

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

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

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

C.Offset.Value = 0.2;
C.Offset.Free = false;
C.NonlinearFcn.NumberOfUnits = 15
C = 
  customnet with properties:

         UnitFcn: @gaussunit
    NonlinearFcn: [1×1 nlident.internal.RidgenetFcn]
           Input: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.UseProjectedLinearFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]

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

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
 Standard regressors corresponding to the orders:
   na = 4, nb = 5, nk = 0

Sample time: 0.1 seconds

Status:                                            
Estimated using NLARX on time domain data "z1".    
Fit to estimation data: 0.06041% (prediction focus)
FPE: 75.67, MSE: 19.38

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

load throttledata

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

H = @gaussunit;
C = customnet(@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: [1×1 idpack.Channel]
          Output: [1×1 idpack.Channel]
       LinearFcn: [1×1 nlident.internal.UseProjectedLinearFcn]
    NonlinearFcn: [1×1 nlident.internal.CustomNLFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]

Оцените Модель Хаммерстайна-Винера использующие порядки [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
Sample time: 0.01 seconds

Status:                                                 
Estimated using NLHW on time domain data "ThrottleData".
Fit to estimation data: 72.35%                          
FPE: 108.1, MSE: 84.36

Больше о

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

Алгоритмы

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

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

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

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

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