customnet

Функция пользовательской сети для нелинейных моделей ARX и Гаммерштейна-Винера

Описание

A 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) является суммой расширенных и переведенных пользовательских единичных функций. Общее количество модуля функций называется number of units n сети.

Для определения термина единичной функции 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) создает объект нелинейного отображения с пользовательской единичной функцией с помощью указателя на функцию H. H должен указывать на функцию формы [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) определяет, использует ли функция параметр offset term 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 - количество входных сигналов. The Input свойства для каждого входного сигнала следующие:

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

  • Mean - Среднее значение входных сигналов, заданное в виде числа

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

Выход сигнале, заданная как значения конкретных свойств. The 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 является конечным. Значение по умолчанию 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 является конечным. Значение по умолчанию 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