exponenta event banner

sigmoidnet

Функция сети Sigmoid для нелинейных моделей ARX и Hammerstein-Wiener

Описание

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

Математически сеть sigmoidnet - это функция, которая отображает 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) см. в разделе Подробнее.

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

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

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

Создание

Описание

пример

S = sigmoidnet создает sigmoidnet объект S который использует 10 единиц. Количество входов определяется при оценке модели, а количество выходов равно 1.

пример

S = sigmoidnet(numUnits) определяет количество сигмоидных функций numUnits.

пример

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

пример

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

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

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

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

Этот аргумент задает S.NonlinearFcn.NumberOfUnits собственность.

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

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

Параметры члена смещения, указанные следующим образом:

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

  • Value - значение смещения, указанное как скаляр.

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

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

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

Параметры нелинейной функции, указанные ниже:

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

  • Parameters - Параметры sigmoidnet, указанного в следующей таблице:

    Имя поляОписаниеДефолт
    InputProjection

    Проекционная матрица Q, заданная как матрица m-на-q. Q преобразует уменьшенный входной вектор (X X) длины m в вектор длины q. Обычно Q имеет те же размеры, что и линейная проекционная матрица P. В этом случае q равно p, которое является числом линейных весов.

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

    []
    OutputCoefficient

    Выходные коэффициенты Sigmoid-функции si, заданные как вектор n-by-1.

    []
    Translation

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

    []
    Dilation

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

    []

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

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

Примеры

свернуть все

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

load iddata7 z7
ze = z7(1:300);

Создание и настройка sigmoidnet объект сопоставления. Зафиксируйте смещение равным 0,2, а количество единиц - равным 15.

S = sigmoidnet;
S.Offset.Value = 0.2;
S.Offset.Free = false;
S.NonlinearFcn.NumberOfUnits = 15;

Создание регрессоров линейной и полиномиальной модели. Использовать имена входных и выходных переменных из z7 в качестве имен переменных для регрессоров.

var_names = [z7.OutputName;z7.InputName]
var_names = 3×1 cell
    {'y1'}
    {'u1'}
    {'u2'}

Reg1 = linearRegressor(var_names,{1:4,0:4,1});
Reg2 = polynomialRegressor(var_names,{1:2,0:2,0},2);

Задайте параметры оценки.

opt = nlarxOptions('SearchMethod','fmincon');
opt.SearchOptions.MaxIterations = 40;

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

sys = nlarx(ze,[Reg1;Reg2],S,opt)
sys = 
Nonlinear ARX model with 1 output and 2 inputs
  Inputs: u1, u2
  Outputs: y1

Regressors:
  1. Linear regressors in variables y1, u1, u2
  2. Order 2 regressors in variables y1, u1, u2
  List of all regressors

Output function: Sigmoid Network with 15 units

Sample time: 1 seconds

Status:                                          
Estimated using NLARX on time domain data "ze".  
Fit to estimation data: 72.23% (prediction focus)
FPE: 7.115, MSE: 0.7625

Оценка модели Хаммерштейна-Винера, использующей sigmoidnet в качестве выходной нелинейности.

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

load throttledata

Создать sigmoidnet объект отображения, имеющий 15 единиц и не имеющий входной нелинейности или смещения.

S = sigmoidnet(15,false,false)
S = 
Sigmoid Network

 Nonlinear Function: Sigmoid network with 15 units.
 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.RidgenetFcn]
          Offset: [1×1 nlident.internal.ChooseableOffset]

Оцените модель Хаммерштейна-Винера.

sys = nlhw(ThrottleData,[4 4 1],[],S)
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: Sigmoid Network with 15 units
Sample time: 0.01 seconds

Status:                                                 
Estimated using NLHW on time domain data "ThrottleData".
Fit to estimation data: 72.91%                          
FPE: 114.9, MSE: 80.96

Подробнее

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

)

Алгоритмы

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

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

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

Не рекомендуется начинать с R2021a

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