sigmoidnet

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

Описание

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

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

Использование 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) определяет, использует ли функция параметр offset term y0.

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

расширить все

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

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

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

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

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