Пользовательское средство оценки нелинейности для нелинейного 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, создает средство оценки нелинейности с помощью пар значения свойства, заданных в customnet Свойствах.PropertyName,PropertyValue)
Можно включать пары значения свойства в конструктора, чтобы задать объект.
После создания объекта можно использовать get или запись через точку, чтобы получить доступ к значениям свойства объекта. Например:
% List all property values get(C) % Get value of NumberOfUnits property C.NumberOfUnits
Можно также использовать функцию set, чтобы установить значение конкретных свойств. Например:
set(C, 'LinearTerm', 'on')
set должен быть именем переменной MATLAB®.| PropertyName | Описание |
|---|---|
NumberOfUnits | Целое число задает количество модулей нелинейности в расширении. Например: customnet(H,'NumberOfUnits',5) |
LinearTerm | Может иметь следующие значения:
Например: customnet(H,'LinearTerm','on') |
Parameters |
Структура, содержащая параметры в нелинейном расширении, можно следующим образом:
Как правило, значения этой структуры установлены путем оценки модели с нелинейностью |
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 является скаляром, и x является m - размерный вектор - строка. Модульная функция основана на следующем функциональном расширении с возможным линейным членом L:
где 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 использует итеративный поисковый метод для оценки параметров.