exponenta event banner

customnet

Пользовательская сетевая функция для нелинейных моделей ARX и Hammerstein-Wiener

Описание

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

Математически сеть customnet - это функция, которая отображает m входов X (t) = [x (t1), x2 (t),..., xm (t)] T в скалярный выход y (t), используя следующее соотношение:

y (t) = y0 + (

Здесь:

  • X (t) является вектором m-на-1 входных данных, или регрессоров, со средними («» m-на-1 «»).

  • y0 - выходной сдвиг, скаляр.

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

  • L - вектор весов p-by-1.

  • S (X) - это сумма расширенных и преобразованных пользовательских единичных функций. Общее количество единичных функций называется количеством блоков 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 является значительно ненулевым. Модели Hammerstein-Wiener требуют, чтобы пользовательская функция имела только один вход и один выход.

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

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

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

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

Программное обеспечение вычисляет выходные данные LinearFcn в виде FL (t) = (Start( t) X ve) 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-на-q. Q преобразует уменьшенный входной вектор (X X) длины m в вектор длины q. Обычно Q имеет те же размеры, что и линейная проекционная матрица P. В этом случае q равно p, которое является числом линейных весов.

    Для моделей Hammerstein-Wiener, InputProjection равно 1.

    []
    OutputCoefficient

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

    []
    Translation

    Матрица трансляции, заданная как матрица n-на-q векторов строк трансляции ci.

    []
    Dilation

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

    []

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

  • SelectedInputIndex - Индексы customnet входы (см. Input.Name), которые используются как входы в нелинейную функцию, заданную как целочисленный вектор 1 на nr, где nr - количество входов. Для нелинейных моделей ARX: RegressorUsage свойство определяет эти индексы. Для моделей Hammerstein-Wiener, 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