customnet

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

Синтаксис

C=customnet(H)
C=customnet(H,PropertyName,PropertyValue)

Описание

customnet является объектом, который хранит пользовательское нелинейное средство оценки пользовательской модульной функцией. Эта пользовательская модульная функция использует взвешенную сумму входных параметров, чтобы вычислить скалярный вывод.

Конструкция

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

C=customnet(H,PropertyName,PropertyValue) создает средство оценки нелинейности с помощью пар значения свойства, заданных в customnet Свойствах.

Свойства customnet

Можно включать пары значения свойства в конструктора, чтобы задать объект.

После создания объекта можно использовать get или запись через точку, чтобы получить доступ к значениям свойства объекта. Например:

% List all property values
get(C)
% Get value of NumberOfUnits property
C.NumberOfUnits

Можно также использовать функцию set, чтобы установить значение конкретных свойств. Например:

set(C, 'LinearTerm', 'on')
Первый аргумент к set должен быть именем переменной MATLAB®.

PropertyName Описание
NumberOfUnits

Целое число задает количество модулей нелинейности в расширении.
Default=10.

Например:

customnet(H,'NumberOfUnits',5)
LinearTerm

Может иметь следующие значения:

  • 'on' — Оценивает вектор L в расширении.

  • 'off' вектор L, чтобы обнулить.

Например:

customnet(H,'LinearTerm','on')
Parameters

Структура, содержащая параметры в нелинейном расширении, можно следующим образом:

  • RegressorMean: 1 m вектором, содержащим средние значения x в данных об оценке, r.

  • NonLinearSubspace: m-by-q матрица, содержащая Q.

  • LinearSubspace: m-by-p матрица, содержащая P.

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

  • Dilation: q-by-1 матрица, содержащая значения миллиард.

  • Перевод: 1 n вектором, содержащим значения cn.

  • OutputCoef: n-by-1 вектор, содержащий значения.

  • OutputOffset: скалярный d.

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

UnitFcnХранит указатель на функцию, который указывает на модульную функцию.

Примеры

Задайте пользовательский модуль, функционируют и сохраняют его в gaussunit.m:

function [f, g, a] = GAUSSUNIT(x)
% x: unit function variable
% f: unit function value
% g: df/dx
% a: unit active range (g(x) is significantly
% nonzero in the interval [-a a])

% The unit function must be "vectorized": for 
% a vector or matrix x, the output arguments f and g 
% must have the same size as x,
% computed element-by-element.

% GAUSSUNIT customnet unit function example
[f, g, a] = gaussunit(x)
f =  exp(-x.*x);
if nargout>1
  g = - 2*x.*f;
  a = 0.2;
end

Используйте пользовательские сети в командах оценки модели nlarx и nlhw:

% Define handle to example unit function.
H = @gaussunit;
% Estimate nonlinear ARX model using
% Gauss unit function with 5 units.
m = nlarx(Data,Orders,customnet(H,'NumberOfUnits',5));

Советы

Используйте customnet, чтобы задать нелинейную функцию y=F(x), где y является скаляром, и x является m - размерный вектор - строка. Модульная функция основана на следующем функциональном расширении с возможным линейным членом L:

F(x)=(xr)PL+a1f((xr)Qb1+c1)+                          +anf((xr)Qbn+cn)+d

где f является модульной функцией, что вы задаете использование указателя на функцию H.

P и Q является m-by-p и m-by-q матрицы проекции, соответственно. Матрицы проекции P и Q определяются анализом главных компонентов данных об оценке. Обычно, p=m. Если компоненты x в данных об оценке линейно зависят, то p<m. Количество столбцов Q, q, соответствует количеству компонентов x, используемого в модульной функции.

Когда используется оценить нелинейные модели ARX, q равен размеру свойства NonlinearRegressors объекта idnlarx. Когда используется оценить модели Хаммерстайна-Винера, m=q=1 и Q - скаляр.

r является 1 m вектором и представляет среднее значение вектора регрессора, вычисленного из данных об оценке.

d, a, и c являются скалярами.

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

b представляет q-by-1 векторы.

Указатель на функцию модульной функции пользовательской сети должен иметь форму [f,g,a] = function_name(x). Эта функция должна быть векторизована, что означает, что для векторного или матричного x, выходные аргументы f и g должны иметь тот же размер как x и быть вычислены поэлементно.

Алгоритмы

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

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