exponenta event banner

nlarx

Оценка параметров нелинейной модели ARX

Описание

Указать регрессоры

пример

sys = nlarx(data,orders) оценивает нелинейную модель ARX в соответствии с заданными оценочными данными, используя указанные порядки моделей ARX и функцию вывода вейвлет-сети по умолчанию. Этот синтаксис используется при расширении линейной модели ARX или при использовании только тех регрессоров, которые являются линейными с последовательными лагами.

пример

sys = nlarx(data,regressors) оценивает нелинейную модель ARX с использованием указанного набора регрессоров regressors. Этот синтаксис используется при наличии линейных регрессоров, не имеющих последовательных лагов, или при наличии полиномиальных регрессоров, пользовательских регрессоров или обоих.

пример

sys = nlarx(___,output_fcn) определяет функцию вывода, которая сопоставляет регрессоры с выводом модели. Этот синтаксис можно использовать с любой из предыдущих комбинаций входных аргументов.

Задание линейной модели

пример

sys = nlarx(data,linmodel) использует линейную модель ARX linmodel для задания порядка моделей и начальных значений линейных коэффициентов модели. Этот синтаксис используется при создании нелинейной модели ARX в качестве расширения или улучшения существующей линейной модели.

пример

sys = nlarx(data,linmodel,output_fcn) определяет функцию вывода, используемую для оценки модели.

Уточнение существующей модели

пример

sys = nlarx(data,sys0) оценивает или уточняет параметры нелинейной модели ARX sys0.

Используйте этот синтаксис для:

  • Оцените параметры модели, ранее созданной с помощью idnlarx конструктор. Перед оценкой можно настроить свойства модели с помощью точечной нотации.

  • Обновление параметров ранее оцененной модели для улучшения соответствия данным оценки. В этом случае алгоритм оценки использует параметры sys0 как первоначальные догадки.

Задать параметры

пример

sys = nlarx(___,Options) указывает дополнительные опции конфигурации для оценки модели.

Примеры

свернуть все

Загрузите оценочные данные.

load twotankdata;

Создание iddata объект из оценочных данных с временем выборки 0,2 секунды.

Ts = 0.2;
z = iddata(y,u,Ts);

Оцените нелинейную модель ARX, используя порядки моделей ARX для задания регрессоров.

sysNL = nlarx(z,[4 4 1])
sysNL = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Wavelet Network with 11 units

Sample time: 0.2 seconds

Status:                                          
Estimated using NLARX on time domain data "z".   
Fit to estimation data: 96.84% (prediction focus)
FPE: 3.482e-05, MSE: 3.431e-05

sys использует значение по умолчанию wavenet функция в качестве функции вывода.

Для сравнения вычислите линейную модель ARX с теми же порядками моделей.

sysL = arx(z,[4 4 1]);

Сравните выходные данные модели с исходными данными.

compare(z,sysNL,sysL)

Нелинейная модель гораздо лучше подходит к данным, чем линейная модель.

Укажите линейный регрессор, эквивалентный матрице порядка модели ARX [4 4 1].

Матрица порядка [4 4 1] указывает, что наборы входных и выходных регрессоров содержат четыре регрессора с лагами в диапазоне от 1 до 4. Например, u1 (t-2) представляет второй входной регрессор.

Укажите имена вывода и ввода.

output_name = 'y1';
input_name = 'u1';
names = {output_name,input_name};

Укажите выходные и входные задержки.

output_lag = [1 2 3 4];
input_lag = [1 2 3 4];
lags = {output_lag,input_lag};

Создайте объект линейного регрессора.

lreg = linearRegressor(names,lags)
lreg = 
Linear regressors in variables y1, u1
       Variables: {'y1'  'u1'}
            Lags: {[1 2 3 4]  [1 2 3 4]}
     UseAbsolute: [0 0]
    TimeVariable: 't'

  Regressors described by this set

Загрузите оценочные данные и создайте объект iddata.

load twotankdata
z = iddata(y,u,0.2);

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

sys = nlarx(z,lreg)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Wavelet Network with 11 units

Sample time: 0.2 seconds

Status:                                          
Estimated using NLARX on time domain data "z".   
Fit to estimation data: 96.84% (prediction focus)
FPE: 3.482e-05, MSE: 3.431e-05

Просмотр регрессоров

getreg(sys)
ans = 8×1 cell
    {'y1(t-1)'}
    {'y1(t-2)'}
    {'y1(t-3)'}
    {'y1(t-4)'}
    {'u1(t-1)'}
    {'u1(t-2)'}
    {'u1(t-3)'}
    {'u1(t-4)'}

Сравните выходные данные модели с оценочными данными.

compare(z,sys)

Создание массивов времени и данных.

dt = 0.01;
t = 0:dt:10;
y = 10*sin(2*pi*t)+rand(size(t));

Создание iddata объект без указанного входного сигнала.

z = iddata(y',[],dt);

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

sys = nlarx(z,2)
sys = 
Nonlinear time series model
  Outputs: y1

Regressors:
  Linear regressors in variables y1
  List of all regressors

Output function: Wavelet Network with 8 units

Sample time: 0.01 seconds

Status:                                          
Estimated using NLARX on time domain data "z".   
Fit to estimation data: 92.92% (prediction focus)
FPE: 0.2568, MSE: 0.2507

Оценка нелинейной модели ARX, использующей функцию отображения sigmoidnet в качестве функции вывода.

Загрузка данных и их разделение на наборы данных оценки и проверки ze и zv.

load twotankdata.mat u y
z = iddata(y,u,'Ts',0.2);
ze = z(1:1500);
zv = z(1501:end);

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

s = sigmoidnet;
s.Offset.Value = 0.2;
s. NonlinearFcn.NumberOfUnits = 15;

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

reg1 = linearRegressor({'y1','u1'},{1:4,0:4});

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

reg2 = polynomialRegressor({'y1','u1'},{1:2,0:2},2);

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

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

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

sys = nlarx(ze,[reg1;reg2],s,opt);

Утвердить sys сравнивая смоделированный отклик модели с набором данных проверки.

compare(zv,sys)

Оцените линейную модель и улучшите модель, добавив treepartition функция вывода.

Загрузите оценочные данные.

load throttledata ThrottleData

Оценка линейной модели ARX linsys с заказами [2 2 1].

linsys = arx(ThrottleData,[2 2 1]);

Создание idnlarx модель шаблона, использующая linsys и определяет sigmoidnet в качестве функции вывода.

sys0 = idnlarx(linsys,treepartition);

Фиксация линейного компонента sys0 чтобы во время оценки линейная часть sys0 остается идентичным linsys.

sys0.OutputFcn.LinearFcn.Free = false;

Оценить свободные параметры sys0, которые являются нелинейными параметрами функции и смещением.

sys = nlarx(ThrottleData,sys0);

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

compare(ThrottleData,linsys,sys)

Для создания пользовательского объекта сопоставления сети требуется определение определяемой пользователем единичной функции.

Определите функцию единицы измерения и сохраните ее как gaussunit.m.


% Copyright 2015 The MathWorks, Inc.

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

Создание пользовательского объекта сопоставления сети с помощью дескриптора gaussunit функция.

H = @gaussunit;
CNet = customnet(H);

Загрузите оценочные данные.

load iddata1;

Оцените нелинейную модель ARX с помощью пользовательской сети.

sys = nlarx(z1,[1 2 1],CNet)
sys = 

<strong>Nonlinear ARX model with 1 output and 1 input</strong>
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1

Output function: Custom Network with 10 units

Sample time: 0.1 seconds

Status:                                          
Estimated using NLARX on time domain data "z1".  
Fit to estimation data: 64.35% (prediction focus)
FPE: 3.58, MSE: 2.465

Загрузите оценочные данные.

load motorizedcamera;

Создание iddata объект.

z = iddata(y,u,0.02,'Name','Motorized Camera','TimeUnit','s');

z является iddata объект с шестью входами и двумя выходами.

Укажите заказы модели.

Orders = [ones(2,2),2*ones(2,6),ones(2,6)];

Укажите различные функции отображения для каждого выходного канала.

NL = [wavenet('NumberOfUnits',2),linear];

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

sys = nlarx(z,Orders,NL)
sys = 
Nonlinear ARX model with 2 outputs and 6 inputs
  Inputs: u1, u2, u3, u4, u5, u6
  Outputs: y1, y2

Regressors:
  Linear regressors in variables y1, y2, u1, u2, u3, u4, u5, u6
  List of all regressors

Output functions:
  Output 1: Wavelet Network with 2 units
  Output 2: Linear Function

Sample time: 0.02 seconds

Status:                                                      
Estimated using NLARX on time domain data "Motorized Camera".
Fit to estimation data: [98.72;98.77]% (prediction focus)    
FPE: 0.5719, MSE: 1.061

Загрузка данных оценки и создание iddata объект z. z содержит два выходных канала и шесть входных каналов.

load motorizedcamera;
z = iddata(y,u,0.02);

Укажите набор линейных регрессоров, которые используют выходные и входные имена из z и содержит:

  • 2 выходных регрессора с 1 запаздыванием.

  • 6 пар входных регрессоров с 1 и 2 лагами.

names = [z.OutputName; z.InputName];
lags = {1,1,[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]};
reg = linearRegressor(names,lags);

Оценка нелинейной модели ARX с помощью sigmoidnet функция отображения с четырьмя блоками для всех выходных каналов.

sys = nlarx(z,reg,sigmoidnet(4))
sys = 
Nonlinear ARX model with 2 outputs and 6 inputs
  Inputs: u1, u2, u3, u4, u5, u6
  Outputs: y1, y2

Regressors:
  Linear regressors in variables y1, y2, u1, u2, u3, u4, u5, u6
  List of all regressors

Output functions:
  Output 1: Sigmoid Network with 4 units
  Output 2: Sigmoid Network with 4 units

Sample time: 0.02 seconds

Status:                                                  
Estimated using NLARX on time domain data "z".           
Fit to estimation data: [98.86;98.79]% (prediction focus)
FPE: 2.641, MSE: 0.9233

Загрузка оценочных данных z1, который имеет один вход и один выход, и получить выходные и входные имена.

load iddata1 z1;
names = [z1.OutputName z1.InputName]
names = 1×2 cell
    {'y1'}    {'u1'}

Определить L как набор линейных регрессоров, который представляет y1 (t-1), u1 (t-2) и u1 (t-5).

L = linearRegressor(names,{1,[2 5]});

Определить P в качестве полиномиального регрессора y1 (t-1) 2.

P = polynomialRegressor(names(1),1,2);

Определить C в качестве пользовательского регрессора y1 (t-2) u1 (t-3). Используйте анонимный дескриптор функции для определения этой функции.

C = customRegressor(names,{2 3},@(x,y)x.*y)
C = 
Custom regressor: y1(t-2).*u1(t-3)
    VariablesToRegressorFcn: @(x,y)x.*y
                  Variables: {'y1'  'u1'}
                       Lags: {[2]  [3]}
                 Vectorized: 1
               TimeVariable: 't'

  Regressors described by this set

Объединение регрессоров в векторе столбца R.

R = [L;P;C]
R=3×1 object
[3 1] array of linearRegressor, polynomialRegressor, customRegressor objects.
------------------------------------
1. Linear regressors in variables y1, u1
       Variables: {'y1'  'u1'}
            Lags: {[1]  [2 5]}
     UseAbsolute: [0 0]
    TimeVariable: 't'

------------------------------------
2. Order 2 regressors in variables y1
               Order: 2
           Variables: {'y1'}
                Lags: {[1]}
         UseAbsolute: 0
    AllowVariableMix: 0
         AllowLagMix: 0
        TimeVariable: 't'

------------------------------------
3. Custom regressor: y1(t-2).*u1(t-3)
    VariablesToRegressorFcn: @(x,y)x.*y
                  Variables: {'y1'  'u1'}
                       Lags: {[2]  [3]}
                 Vectorized: 1
               TimeVariable: 't'

  Regressors described by this set

Оценка нелинейной модели ARX с помощью R.

sys = nlarx(z1,R)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  1. Linear regressors in variables y1, u1
  2. Order 2 regressors in variables y1
  3. Custom regressor: y1(t-2).*u1(t-3)
  List of all regressors

Output function: Wavelet Network with 1 unit

Sample time: 0.1 seconds

Status:                                          
Estimated using NLARX on time domain data "z1".  
Fit to estimation data: 59.73% (prediction focus)
FPE: 3.356, MSE: 3.147

Просмотр полного набора регрессоров.

getreg(sys)
ans = 5×1 cell
    {'y1(t-1)'         }
    {'u1(t-2)'         }
    {'u1(t-5)'         }
    {'y1(t-1)^2'       }
    {'y1(t-2).*u1(t-3)'}

Загрузите оценочные данные.

load iddata1;

Создайте объект отображения сигмоидной сети с 10 единицами измерения и без линейного члена.

SN = sigmoidnet(10,false);

Оцените нелинейную модель ARX. Убедитесь, что модель не использует линейную функцию.

sys = nlarx(z1,[2 2 1],SN);
sys.OutputFcn.LinearFcn.Use
ans = logical
   0

Загрузите оценочные данные.

load throttledata;

Уменьшите данные.

Tr = getTrend(ThrottleData);
Tr.OutputOffset = 15;
DetrendedData = detrend(ThrottleData,Tr);

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

LinearModel = arx(DetrendedData,[2 1 1]);

Оцените нелинейную модель ARX с помощью линейной модели. Порядки моделей, задержки и линейные параметры NonlinearModel являются производными от LinearModel.

NonlinearModel = nlarx(ThrottleData,LinearModel)
NonlinearModel = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: Step Command
  Outputs: Throttle Valve Position

Regressors:
  Linear regressors in variables Throttle Valve Position, Step Command
  List of all regressors

Output function: Wavelet Network with 7 units

Sample time: 0.01 seconds

Status:                                                  
Estimated using NLARX on time domain data "ThrottleData".
Fit to estimation data: 99.03% (prediction focus)        
FPE: 0.1127, MSE: 0.1039

Загрузите оценочные данные.

load iddata1;

Создание idnlarx модель.

sys = idnlarx([2 2 1]);

Сконфигурируйте модель с помощью точечной нотации для:

  • Используйте объект сопоставления сети sigmoid.

  • Присвойте имя.

sys.Nonlinearity = 'sigmoidnet';
sys.Name = 'Model 1';

Оценка нелинейной модели ARX со структурой и свойствами, указанными в idnlarx объект.

sys = nlarx(z1,sys)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Sigmoid Network with 10 units

Name: Model 1
Sample time: 0.1 seconds

Status:                                          
Estimated using NLARX on time domain data "z1".  
Fit to estimation data: 69.03% (prediction focus)
FPE: 2.918, MSE: 1.86

Если оценка останавливается на локальном минимуме, можно нарушить модель с помощью init и переоценить модель.

Загрузите оценочные данные.

load iddata1;

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

sys1 = nlarx(z1,[4 2 1],'sigmoidnet');

Случайное возмущение параметров модели во избежание локальных минимумов.

sys2 = init(sys1);

Оцените новую нелинейную модель с возмущенными значениями.

sys2 = nlarx(z1,sys1);

Загрузите оценочные данные.

load twotankdata;

Создание iddata объект из оценочных данных.

z = iddata(y,u,0.2);

Создание nlarxOptions набор опций, задающий цель минимизации ошибки моделирования и максимум 50 итераций оценки.

opt = nlarxOptions;
opt.Focus = 'simulation';
opt.SearchOptions.MaxIterations = 50;

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

sys = nlarx(z,[4 4 1],'sigmoidnet',opt)
sys = 
Nonlinear ARX model with 1 output and 1 input
  Inputs: u1
  Outputs: y1

Regressors:
  Linear regressors in variables y1, u1
  List of all regressors

Output function: Sigmoid Network with 10 units

Sample time: 0.2 seconds

Status:                                          
Estimated using NLARX on time domain data "z".   
Fit to estimation data: 88.79% (simulation focus)
FPE: 3.341e-05, MSE: 0.0004307

Загрузите данные примера регуляризации.

load regularizationExampleData.mat nldata;

Создать sigmoidnet сопоставить объект с 30 единицами измерения и указать порядки моделей.

MO = sigmoidnet(30);
Orders = [1 2 1];

Создайте набор опций оценки и задайте для метода поиска оценки значение lm.

opt = nlarxOptions('SearchMethod','lm');

Оценка нерегулируемой модели.

sys = nlarx(nldata,Orders,MO,opt);

Конфигурирование регуляризации Lambda параметр.

opt.Regularization.Lambda = 1e-8;

Оценка регуляризованной модели.

sysR = nlarx(nldata,Orders,MO,opt);

Сравните две модели.

compare(nldata,sys,sysR)

Большой отрицательный результат подгонки для нерегулируемой модели указывает на плохую подгонку к данным. Оценка регуляризованной модели дает значительно лучший результат.

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

свернуть все

Данные оценки временной области, указанные как iddata объект или числовая матрица.

  • Если data является iddata объект, затем data может иметь один или более выходных каналов и нуль или более входных каналов.

  • Если data является числовой матрицей, то количество столбцов данных должно совпадать с суммой количества входов (nu) и количества выходов (ny.

data должны быть равномерно отобраны и не могут содержать отсутствующие (NaN) образцы.

Заказы модели ARX, указанные как матрица [na nb nk]. na обозначает количество задержанных выходов, nb обозначает количество отложенных входов, и nk обозначает минимальную задержку на входе. Минимальная задержка на выходе фиксирована на 1. Дополнительные сведения о построении orders матрица, см. arx.

При указании orders, программное обеспечение преобразует информацию о порядке в форму линейного регрессора в idnlarx Regressors собственность. Пример см. в разделе Создание нелинейной модели ARX с использованием заказов модели ARX.

Спецификация регрессора, заданная как вектор столбца, содержащий один или несколько объектов спецификации регрессора, которые являются linearRegressor объекты, polynomialRegressor объекты, и customRegressor объекты. Каждый объект задает формулу для создания регрессоров из запаздывающих переменных. Например:

  • L = linearRegressor({'y1','u1'},{1,[2 5]}) генерирует регрессоры y1 (t-1), u1 (t-2) и u2 (t-5).

  • P = polynomialRegressor('y2',4:7,2) генерирует регрессоры y2 (t-4) 2, y2 (t-5) 2, y2 (t-6) 2 и y2 (t-7) 2.

  • C = customRegressor({'y1','u1','u2'},{1 2 2},@(x,y,z)sin(x.*y+z)) генерирует одиночный регрессор sin (y1 (t-1) u1 (t-2) + u2 (t-2)).

При создании набора регрессоров для поддержки оценки с помощью iddata вместо создания имен для функции-регрессора можно использовать входные и выходные имена объекта. Например, предположим, что вы создаете линейный регрессор для модели, планируйте использовать iddata объект z для оценки модели. Для создания линейного регрессора можно использовать следующую команду.

L = linearRegressor([z.outputName;z.inputName],{1,[2 5]})

Пример создания и использования набора линейных регрессоров SISO см. в разделе Оценка нелинейной модели ARX с использованием набора линейных регрессоров. Пример создания набора линейных регрессоров MIMO, который получает имена переменных из набора данных оценки, см. в разделе Оценка модели нелинейного ARX MIMO с одинаковой функцией отображения для всех выходов.

Функция вывода, отображающая регрессоры idnlarx модель на выходе модели, заданная как массив столбцов, содержащий ноль или более следующих строк или объектов:

'wavenet' или wavenet объектВейвлет-сеть
'linear' или '' или [] или linear объектЛинейная функция
'sigmoidnet' или sigmoidnet объектСигмоидная сеть
'treepartition' или treepartition объектМодель регрессии секционирования двоичного дерева
neuralnet объектНейронная сеть - Feedforward network of Deep Learning Toolbox™.
customnet объектПользовательская сеть - Аналогично sigmoidnet, но с определяемой пользователем заменой сигмоидной функции.

Использовать строку, например 'sigmoidnet', для использования свойств по умолчанию объекта функции отображения. Использовать сам объект, например sigmoidnet, если требуется настроить свойства объекта сопоставления.

wavenet, sigmoidnet, treepartion, и customnet объекты содержат как линейные, так и нелинейные компоненты. Можно удалить (не использовать) линейные компоненты wavenet, sigmoidnet, и customnet путем установки LinearFcn.Use значение для false.

neuralnet имеет только нелинейный компонент, который является network (Deep Learning Toolbox) Объект Deep Learning Toolbox. Линейная функция, как следует из названия, имеет только линейный компонент.

output_fcn статичен тем, что зависит только от значений данных в определенное время, но не непосредственно от самого времени. Например, если выходная функция y (t) равна y0 + a1 y (t-1) + a2 y (t-2) +... b1 u (t-1 ) + b2 u (t-2) +..., затем output_fcn является линейной функцией, которая linear объект сопоставления представляет.

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

  • Создайте объект сопоставления с помощью аргументов для изменения свойств по умолчанию.

    MO = sigmoidnet(15);
  • Сначала создайте объект сопоставления по умолчанию, а затем используйте точечное представление для изменения свойств.

    MO = sigmoidnet;
    MO.NumberOfUnits = 15;

Для ny выходных каналов можно задать объекты отображения отдельно для каждого канала путем установки output_fcn в массив ny объектов сопоставления. Например, следующий код определяет OutputFcn использование точечной нотации для системы с двумя входными каналами и двумя выходными каналами.

sys = idnlarx({'y1','y2'},{'u1','u2'});
sys.OutputFcn = [wavenet; sigmoidnet];
Чтобы задать одинаковое сопоставление для всех выходов, укажите OutputFcn в виде символьного вектора или одиночного объекта сопоставления.

output_fcn представляет функцию статического отображения, которая преобразует регрессоры нелинейной модели ARX в выходные данные модели. output_fcn статичен, поскольку не зависит от времени. Например, если y (t) = y0 + a1y (t 1) + a2y (t 2) +... + b1u (t − 1) + b2u (t − 2) +..., тоoutput_fcn - линейная функция, представленная linear объект.

Пример задания функции вывода см. в разделе Указание и настройка функции вывода.

Дискретно-временная идентифицированная линейная модель ввода/вывода, заданная как любая линейная модель, созданная с использованием оценщика, например arx, armax, tfest, или ssest. Например, для создания пространства состояния idss модель, оценка модели с использованием ssest.

Нелинейная модель ARX, заданная как idnlarx модель. sys0 могут быть:

  • Модель, предварительно оцененная с помощью nlarx. Алгоритм оценки использует параметры sys0 как первоначальные догадки. В этом случае используйте init чтобы слегка нарушить свойства модели, чтобы избежать захвата модели в локальных минимумах.

    sys = init(sys);
    sys = nlarx(data,sys);
  • Модель, ранее созданная с помощью idnlarx конструктора и со свойствами, заданными с помощью точечной нотации. Например, используйте следующее, чтобы создать объект idnlarx, задать его свойства и оценить модель.

    sys1 = idnlarx('y1','u1',Regressors);
    sys1.OutputFcn = 'treepartition';
    sys1.Ts = 0.02;
    sys1.TimeUnit = 'Minutes';
    sys1.InputName = 'My Data';
    sys2 = nlarx(data,sys1);

    Предыдущий код эквивалентен следующей команде nlarx.

    sys2 = nlarx(data,Regressors,'treepartition','Ts',0.02,'TimeUnit','Minutes', ...
    'InputName','My Data');

Опции оценки для нелинейной идентификации модели ARX, указанные как nlarxOptions набор опций.

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

свернуть все

Нелинейная модель ARX, которая соответствует данным оценки, возвращается как idnlarx объект. Эта модель создается с использованием указанных порядков моделей, оценщика нелинейности и опций оценки.

Информация о результатах оценки и используемых опциях хранится в Report свойство модели. Содержание Report зависит от выбора нелинейности и фокусировки оценки, указанной для nlarx. Report имеет следующие поля:

Поле отчетаОписание
Status

Сводка состояния модели, указывающая, была ли модель создана путем построения или получена путем оценки.

Method

Используется команда оценки.

Fit

Количественная оценка оценки, возвращенная как структура. Дополнительные сведения об этих показателях качества см. в разделе Метрики качества функции потери и модели. Структура имеет следующие поля:

ОбластьОписание
FitPercent

Нормализованная среднеквадратическая ошибка (NRMSE) измерения того, насколько хорошо отклик модели соответствует данным оценки, выраженным в процентах fit = 100 (1-NRMSE).

LossFcn

Значение функции потерь после завершения оценки.

MSE

Показатель среднеквадратичной ошибки (MSE) того, насколько хорошо отклик модели соответствует данным оценки.

FPE

Ошибка окончательного прогноза для модели.

AIC

Показатель качества модели Raw Akaike Information Criteria (AIC).

AICc

Небольшой размер выборки, скорректированный AIC.

nAIC

Нормализованная AIC.

BIC

Байесовские информационные критерии (BIC).

Parameters

Оценочные значения параметров модели.

OptionsUsed

Набор опций, используемый для оценки. Если пользовательские параметры не были настроены, это набор параметров по умолчанию. Посмотрите nlarxOptions для получения дополнительной информации.

RandState

Состояние потока случайных чисел в начале оценки. Пустое, [], если рандомизация не использовалась во время оценки. Дополнительные сведения см. в разделе rng.

DataUsed

Атрибуты данных, используемых для оценки, возвращаемые в виде структуры со следующими полями:

ОбластьОписание
Name

Имя набора данных.

Type

Тип данных.

Length

Количество выборок данных.

Ts

Время выборки.

InterSample

Поведение ввода между образцами, возвращаемое как одно из следующих значений:

  • 'zoh' - Удержание нулевого порядка поддерживает кусочно-постоянный входной сигнал между выборками.

  • 'foh' - Удержание первого порядка поддерживает кусочно-линейный входной сигнал между выборками.

  • 'bl' - Поведение с ограниченной полосой указывает, что входной сигнал непрерывного времени имеет нулевую мощность выше частоты Найквиста.

InputOffset

Смещение удалено из входных данных временной области во время оценки. Для нелинейных моделей это [].

OutputOffset

Смещение удалено из выходных данных временной области во время оценки. Для нелинейных моделей это [].

Termination

Условия завершения итеративного поиска, используемые для минимизации ошибок прогнозирования, возвращены в виде структуры со следующими полями:

ОбластьОписание
WhyStop

Причина прекращения числового поиска.

Iterations

Количество итераций поиска, выполненных алгоритмом оценки.

FirstOrderOptimality

∞-norm вектора поиска градиента при завершении алгоритма поиска.

FcnCount

Число вызовов целевой функции.

UpdateNorm

Норма вектора поиска градиента в последней итерации. Опущено, когда метод поиска 'lsqnonlin' или 'fmincon'.

LastImprovement

Улучшение критерия в последней итерации, выраженное в процентах. Опущено, когда метод поиска 'lsqnonlin' или 'fmincon'.

Algorithm

Алгоритм, используемый 'lsqnonlin' или 'fmincon' способ поиска. Опускается при использовании других методов поиска.

Для методов оценки, которые не требуют оптимизации числового поиска, Termination поле опущено.

Дополнительные сведения об использовании Report, см. Отчет по оценке.

Алгоритмы

свернуть все

Нелинейная структура модели ARX

Нелинейная модель ARX состоит из регрессоров модели и выходной функции. Функция вывода включает в себя линейные и нелинейные функции, которые действуют на регрессоры модели для получения выходного сигнала модели и фиксированного смещения для этого выходного сигнала. Эта блок-схема представляет структуру нелинейной модели ARX в сценарии моделирования.

Regressor block is on the left. Output function is on the right. Output function block contains, from top to bottom, Offset, Nonlinear Function, and Linear Function. The inputs to the Regressor block are system input u and the output of the output function y.

Программное обеспечение вычисляет выход нелинейной модели ARX y в два этапа:

  1. Он вычисляет значения регрессора из текущих и прошлых входных значений и прошлых выходных данных.

    В простейшем случае регрессоры представляют собой запаздывающие входы и выходы, такие как u (t-1) и y (t-3). Такие регрессоры называются линейными регрессорами. Линейные регрессоры задаются с помощью linearRegressor объект. Можно также задать линейные регрессоры, используя линейные порядки моделей ARX в качестве входного аргумента. Дополнительные сведения см. в разделе Нелинейные заказы модели ARX и задержка. Однако этот второй подход ограничивает набор регрессоров линейными регрессорами с последовательными задержками. Для создания полиномиальных регрессоров используйте polynomialRegressor объект. Можно также указать пользовательские регрессоры, которые являются нелинейными функциями отложенных входов и выходов. Например, u (t-1) y (t-3) является пользовательским регрессором, который умножает экземпляры ввода и вывода вместе. Укажите пользовательские регрессоры с помощью customRegressor объект.

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

  2. Он отображает регрессоры на выходные данные модели с помощью функционального блока вывода. Выходной функциональный блок может включать в себя линейные и нелинейные блоки параллельно. Например, рассмотрим следующее уравнение:

    F (x) = LT (x r) + g (Q (x − r)) + d

    Здесь x - вектор регрессоров, а r - среднее значение x. F (x) = LT (x r) + y0 - выход линейного функционального блока. g (Q (x − r)) + y0 представляет выход нелинейного функционального блока. Q - это проекционная матрица, которая делает вычисления хорошо обусловленными. d - скалярное смещение, которое добавляется к объединенным выходам линейного и нелинейного блоков. Точная форма F (x) зависит от выбора функции вывода. Можно выбрать из доступных объектов отображения, таких как сети с древовидными разделами, вейвлет-сети и многослойные нейронные сети. Можно также исключить линейный или нелинейный функциональный блок из функции вывода.

    При оценке нелинейной модели ARX программное обеспечение вычисляет значения параметров модели, такие как L, r, d, Q, и другие параметры, определяющие g.

Результирующими нелинейными моделями ARX являются idnlarx объекты, хранящие все данные модели, включая регрессоры модели и параметры выходной функции. Дополнительные сведения об этих объектах см. в разделе Нелинейные структуры модели.

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

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

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

Расширенные возможности

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