Оцените параметры нелинейной модели ARX
оценивает, что нелинейная модель ARX соответствует данным данным об оценке с помощью заданных порядков модели ARX и выходной функции сети вейвлета по умолчанию. Используйте этот синтаксис, когда вы расширяете ARX линейная модель, или когда вы используете только регрессоры, которые линейны с последовательными задержками.sys
= nlarx(data
,orders
)
оценивает, что нелинейная модель ARX с помощью заданного регрессора установила sys
= nlarx(data
,regressors
)regressors
. Используйте этот синтаксис, когда у вас есть линейные регрессоры, которые имеют непоследовательные задержки, или когда у вас также есть полиномиальные регрессоры, пользовательские регрессоры или оба.
задает выходную функцию, которая сопоставляет регрессоры с выходом модели. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.sys
= nlarx(___,output_fcn
)
использует линейную модель ARX sys
= nlarx(data
,linmodel
)linmodel
задавать порядки модели и начальные значения линейных коэффициентов модели. Используйте этот синтаксис, когда это необходимо, чтобы создать нелинейную модель ARX как расширение, или улучшение на, существующую линейную модель. Когда вы используете этот синтаксис, программное обеспечение инициализирует значение смещения к 0
. В некоторых случаях можно улучшить результаты оценки путем переопределения этой инициализации с командой sys.OutputFcn.Offset.Value = NaN
.
задает выходную функцию, чтобы использовать для оценки модели.sys
= nlarx(data
,linmodel
,output_fcn
)
оценки или совершенствовали параметры нелинейной модели ARX sys
= nlarx(data
,sys0
)sys0
.
Используйте этот синтаксис для:
Оцените, что параметры модели ранее создали использование idnlarx
конструктор. До оценки можно сконфигурировать свойства модели с помощью записи через точку.
Обновите параметры ранее предполагаемой модели, чтобы улучшить подгонку к данным об оценке. В этом случае алгоритм оценки использует параметры sys0
как исходные предположения.
Загрузите данные об оценке.
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
использует idWaveletNetwork
по умолчанию функционируйте как выходную функцию.
Для сравнения вычислите линейную модель ARX с теми же порядками модели.
sysL = arx(z,[4 4 1]);
Сравните выходные параметры модели с исходными данными.
compare(z,sysNL,sysL)
Нелинейная модель имеет намного лучшую подгонку к данным, чем линейная модель.
Задайте линейный регрессор, который эквивалентен матрице порядка модели ARX [4 4 1]
.
Матрица порядка [4 4 1]
указывает, что оба набора регрессора ввода и вывода содержат четыре регрессора с задержками в пределах от 1 - 4. Например, представляет второй входной регрессор.
Задайте выход и введите имена.
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 = 8x1 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, которая использует функцию отображения idSigmoidNetwork
как его выходная функция.
Загрузите данные и разделите их на наборы данных оценки и валидации ze
и zv
.
load twotankdata.mat u y z = iddata(y,u,'Ts',0.2); ze = z(1:1500); zv = z(1501:end);
Сконфигурируйте idSigmoidNetwork
отображение функции. Зафиксируйте смещение к 0,2 и количество модулей к 15.
s = idSigmoidNetwork; 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,idTreePartition);
Зафиксируйте линейный компонент sys0
так, чтобы во время оценки, линейного фрагмента sys0
остается идентичным linsys
. Установите значение компонента смещения к NaN
.
sys0.OutputFcn.LinearFcn.Free = false; sys0.OutputFcn.Offset.Value = NaN;
Оцените свободные параметры sys0
, которые являются нелинейными параметрами функции и смещением.
sys = nlarx(ThrottleData,sys0);
Сравните подходящую точность для линейных и нелинейных моделей.
compare(ThrottleData,linsys,sys)
Генерация пользовательского объекта отображения сети требует определения пользовательской модульной функции.
Задайте модуль, функционируют и сохраняют его как gaussunit.m
.
function [f,g,a] = gaussunit(x) % Custom unit function nonlinearity. % % Copyright 2015 The MathWorks, Inc. f = exp(-x.*x); if nargout>1 g = -2*x.*f; a = 0.2; end
Создайте пользовательский объект отображения сети использование указателя на gaussunit
функция.
H = @gaussunit; CNet = idCustomNetwork(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 and "gaussunit" unit function 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 = [idWaveletNetwork(2),idLinear];
Оцените нелинейную модель 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: None 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 с помощью idSigmoidNetwork
отображение функции с четырьмя модулями для всех выходных каналов.
sys = nlarx(z,reg,idSigmoidNetwork(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 = 1x2 cell
{'y1'} {'u1'}
Задайте L
как набор линейных регрессоров, который представляет , , и .
L = linearRegressor(names,{1,[2 5]});
Задайте P
как полиномиальный регрессор .
P = polynomialRegressor(names(1),1,2);
Задайте C
как пользовательский регрессор . Используйте указатель анонимной функции, чтобы задать эту функцию.
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] 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 units 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 = 5x1 cell
{'y1(t-1)' }
{'u1(t-2)' }
{'u1(t-5)' }
{'y1(t-1)^2' }
{'y1(t-2).*u1(t-3)'}
Загрузите данные об оценке.
load iddata1;
Создайте сигмоидальный объект отображения сети с 10 модулями и никаким линейным членом.
SN = idSigmoidNetwork(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 12 units Sample time: 0.01 seconds Status: Estimated using NLARX on time domain data "ThrottleData". Fit to estimation data: 65.67% (prediction focus) FPE: 145.7, MSE: 130
idnlarx
ОбъектЗагрузите данные об оценке.
load iddata1;
Создайте idnlarx
модель.
sys = idnlarx([2 2 1]);
Сконфигурируйте модель с помощью записи через точку для:
Используйте сигмоидальный объект отображения сети.
Присвойте имя.
sys.Nonlinearity = 'idSigmoidNetwork'; 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],'idSigmoidNetwork');
Случайным образом встревожьте параметры модели, чтобы избежать локальных минимумов.
sys2 = init(sys1);
Оцените новую нелинейную модель со встревоженными значениями.
sys2 = nlarx(z1,sys1);
Загрузите данные об оценке.
load twotankdata;
Создайте iddata
объект из данных об оценке.
z = iddata(y,u,0.2);
Создайте nlarxOptions
набор опции, задающий ошибочную цель минимизации симуляции и максимум 10 итераций оценки.
opt = nlarxOptions;
opt.Focus = 'simulation';
opt.SearchOptions.MaxIterations = 10;
Оцените нелинейную модель ARX.
sys = nlarx(z,[4 4 1],idSigmoidNetwork(3),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 3 units Sample time: 0.2 seconds Status: Estimated using NLARX on time domain data "z". Fit to estimation data: 85.86% (simulation focus) FPE: 3.791e-05, MSE: 0.0006853
Загрузите данные о регуляризации в качестве примера.
load regularizationExampleData.mat nldata;
Создайте idSigmoidnetwork
отображение объекта с 30 модулями и задает порядки модели.
MO = idSigmoidNetwork(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)
Большой отрицательный результат подгонки для неупорядоченной модели указывает на плохую подгонку к данным. Оценка упорядоченной модели приводит к значительно лучшему результату.
data
— Данные об оценке временного интервалаiddata
возразите | числовая матрицаДанные об оценке временного интервала в виде iddata
возразите или числовая матрица.
Если data
iddata
объект, затем data
может иметь один или несколько выходных каналов и нуля или более входных каналов.
Если data
числовая матрица, затем количество столбцов данных должно совпадать с суммой количества входных параметров (nu) и количество выходных параметров (ny.
data
должен быть однородно произведен и не может содержать то, чтобы избегать (NaN
Выборки.
orders
— Порядки модели ARXnlarx
порядки [na nb nk]
Модель ARX заказывает в виде матричного [na nb nk]
N/A
обозначает количество задержанных выходных параметров, nb
обозначает количество задержанных входных параметров и nk
обозначает минимальную входную задержку. Минимальная выходная задержка фиксируется к 1
. Для получения дополнительной информации о том, как создать orders
матрица, смотрите arx
.
Когда вы задаете orders
, программное обеспечение преобразует информацию для заказа в линейную форму регрессора в idnlarx
Regressors
свойство. Для примера смотрите, Создают Нелинейную Модель ARX Используя Порядки Модели ARX.
regressors
— Спецификация регрессораlinearRegressor
возразите | polynomialRegressor
возразите | customRegressor
возразите | массив столбца объектов спецификации регрессораСпецификация регрессора в виде вектор-столбца, содержащего один или несколько объектов спецификации регрессора, которые являются 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 линейный набор регрессора, который получает имена переменных из набора данных оценки, видит Оценку MIMO Нелинейная Модель ARX с Той же Функцией Отображения для Всех Выходных параметров.
output_fcn
Выходная функция'idWaveletNetwork'
(значение по умолчанию) | 'idLinear'
| []
| ''
| 'idSigmoidNetwork'
| 'idTreePartition'
| 'idFeedforwardNetwork'
| 'idCustomNetwork'
| 'idTreePartition'
| 'idGaussianProcess'
| 'idTreeEnsemble'
| отображение объекта | массив отображения объектовВыходная функция, которая сопоставляет регрессоры idnlarx
модель в выход модели в виде массива столбца, содержащего нуль или больше следующих строк или объектов:
'idWaveletNetwork' или idWaveletNetwork объект | Сеть Wavelet |
'linear' или '' или [] или idLinear объект | Линейная функция |
'idSigmoidNetwork' или idSigmoidNetwork объект | Сигмоидальная сеть |
'idTreePartition' или idTreePartition объект | Модель регрессии раздела двоичного дерева |
'idGaussianProcess' или idGaussianProcess объект | Гауссова модель регрессии процесса (требует Statistics and Machine Learning Toolbox™), |
'idTreeEnsemble' или idTreeEnsemble | Модель ансамбля дерева регрессии требует (Statistics and Machine Learning Toolbox) |
idFeedforwardNetwork объект | Нейронная сеть — Сеть прямого распространения Deep Learning Toolbox™. |
idCustomNetwork объект | Пользовательская сеть — Подобно idSigmoidNetwork , но с пользовательской заменой для сигмоидальной функции. |
Используйте строку, такую как 'idSigmoidNetwork'
, использовать свойства по умолчанию функционального объекта отображения. Используйте сам объект, такой как idSigmoidNetwork
, когда это необходимо, сконфигурировать свойства объекта отображения.
idWaveletNetwork
, idSigmoidNetwork
, idTreePartition
, и idCustomNetwork
объекты содержат и линейные и нелинейные компоненты. Можно удалить (не, используют), линейные компоненты idWaveletNetwork
, idSigmoidNetwork
, и idCustomNetwork
путем установки LinearFcn.Use
значение к false
.
idFeedforwardNetwork
функция имеет только нелинейный компонент, который является network
Объект (Deep Learning Toolbox) Deep Learning Toolbox. idLinear
объект, когда имя подразумевает, имеет только линейный компонент.
output_fcn
является статическим в этом, это зависит только от значений данных в определенное время, но не непосредственно вовремя его. Например, если выходная функция y (t) равна y0 + a1
y (t –1) + a2
y (t –2) + … b1
u (t –1) + b2
u (t –2) + …, то output_fcn
линейная функция что linear
отображение объекта представляет.
Определение вектора символов, например, 'idSigmoidNetwork'
, создает объект отображения с настройками по умолчанию. В качестве альтернативы можно задать свойства объектов отображения двумя способами:
Создайте объект отображения использование аргументов, чтобы изменить свойства по умолчанию.
MO = idSigmoidNetwork(15);
Создайте отображение значения по умолчанию, возражают сначала и затем используют запись через точку, чтобы изменить свойства.
MO = idSigmoidNetwork; MO.NumberOfUnits = 15;
Для ny каналы выхода можно задать объекты отображения индивидуально для каждого канала установкой output_fcn
к массиву объектов отображения ny. Например, следующий код задает OutputFcn
использование записи через точку для системы с двумя входными каналами и двумя выходными каналами.
sys = idnlarx({'y1','y2'},{'u1','u2'}); sys.OutputFcn = [idWaveletNetwork; idSigmoidNetwork];
OutputFcn
как вектор символов или один объект отображения.
output_fcn
представляет статическую функцию отображения, которая преобразовывает регрессоры нелинейной модели ARX в выход модели. output_fcn
является статическим, потому что это не зависит вовремя. Например, если , затем output_fcn
линейная функция, представленная idLinear
объект.
Для примера определения выходной функции смотрите, Задают и Настраивают Выходную функцию.
linmodel
— Дискретное время линейная модельidpoly
объект | idss
объект | idtf
объект | idproc
объектsys0
— Нелинейная модель ARXidnlarx
модельНелинейная модель ARX в виде idnlarx
модель. sys0
может быть:
Модель ранее оценила использование nlarx
. Алгоритм оценки использует параметры sys0
как исходные предположения. В этом случае использовать init
немного встревожить свойства модели постараться не захватывать модель в локальных минимумах.
sys = init(sys); sys = nlarx(data,sys);
Модель ранее создала использование idnlarx
конструктор и с набором свойств с помощью записи через точку. Например, используйте следующее, чтобы создать объект idnlarx, установить его свойства и оценить модель.
sys1 = idnlarx('y1','u1',Regressors); sys1.OutputFcn = 'idTreePartition'; sys1.Ts = 0.02; sys1.TimeUnit = 'Minutes'; sys1.InputName = 'My Data'; sys2 = nlarx(data,sys1);
Предыдущий код эквивалентен следующей nlarx команде.
sys2 = nlarx(data,Regressors,'idTreePartition','Ts',0.02,'TimeUnit','Minutes', ... 'InputName','My Data');
Options
— Опции оценкиnlarxOptions
опция установленаОпции оценки для нелинейной идентификации модели ARX в виде nlarxOptions
опция установлена.
sys
— Нелинейная модель ARXidnlarx
объектНелинейная модель ARX, которая соответствует данным данным об оценке, возвратилась как idnlarx
объект. Эта модель создается с помощью заданных порядков модели, средства оценки нелинейности и опций оценки.
Информация о результатах оценки и используемых опциях хранится в Report
свойство модели. Содержимое Report
зависьте от выбора нелинейности, и оценка фокусируют вас заданный для nlarx
. Report
имеет следующие поля:
Сообщите о поле | Описание | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Сводные данные состояния модели, которое указывает, была ли модель создана конструкцией или получена оценкой. | ||||||||||||||||||
Method | Команда оценки используется. | ||||||||||||||||||
Fit | Количественная оценка оценки, возвращенной как структура. Смотрите Функцию потерь и Метрики качества Модели для получения дополнительной информации об этих метриках качества. Структура имеет следующие поля:
| ||||||||||||||||||
Parameters | Ориентировочные стоимости параметров модели. | ||||||||||||||||||
OptionsUsed | Набор опции используется для оценки. Если никакие пользовательские опции не были сконфигурированы, это - набор опций по умолчанию. Смотрите | ||||||||||||||||||
RandState | Состояние потока случайных чисел в начале оценки. | ||||||||||||||||||
DataUsed | Атрибуты данных используются для оценки, возвращенной как структура со следующими полями.
| ||||||||||||||||||
Termination | Условия завершения для итеративного поиска, используемого для ошибочной минимизации предсказания, возвращенной как структура со следующими полями:
Для методов оценки, которые не требуют числовой оптимизации поиска, |
Для получения дополнительной информации об использовании Report
, см. Отчет Оценки.
Нелинейная модель ARX состоит из регрессоров модели и выходной функции. Выходная функция включает линейные и нелинейные функции, которые действуют на регрессоры модели, чтобы дать выход модели и фиксированное смещение для того выхода. Эта блок-схема представляет структуру нелинейной модели ARX в сценарии симуляции.
Программное обеспечение вычисляет нелинейную модель ARX выход y на двух этапах:
Это вычисляет значения регрессора из текущих и прошлых входных значений и прошлых выходных данных.
В самом простом случае регрессоры являются задержанными вводами и выводами, такими как u (t –1) и y (t –3). Подобные регрессоры называются linear regressors. Вы задаете линейные регрессоры с помощью linearRegressor
объект. Можно также задать линейные регрессоры при помощи линейных порядков модели ARX как входной параметр. Для получения дополнительной информации смотрите Нелинейные Порядки Модели ARX и Задержку. Однако этот второй подход ограничивает ваш набор регрессора к линейным регрессорам с последовательными задержками. Чтобы создать polynomial regressors, используйте polynomialRegressor
объект. Можно также задать custom regressors, которые являются нелинейными функциями задержанных вводов и выводов. Например, u (t –1) y (t –3) является пользовательским регрессором, который умножает экземпляры ввода и вывода вместе. Задайте пользовательские регрессоры с помощью customRegressor
объект.
Можно присвоить любой из регрессоров как входные параметры с блоком линейной функции выходной функции, нелинейного функционального блока или обоих.
Это сопоставляет регрессоры с выходом модели с помощью блока выходной функции. Блок выходной функции может включать линейные и нелинейные блоки параллельно. Например, рассмотрите следующее уравнение:
Здесь, x является вектором из регрессоров, и r является средним значением x. выход блока линейной функции. представляет выход нелинейного функционального блока. Q является матрицей проекции, которая делает вычисления хорошо подготовленными. d является скалярным смещением, которое добавляется к объединенным выходным параметрам линейных и нелинейных блоков. Точная форма F (x) зависит от вашего выбора выходной функции. Можно выбрать из доступных объектов отображения, таких как сети древовидного раздела, сети вейвлета и многоуровневые нейронные сети. Можно также исключить или линейное или нелинейный функциональный блок от выходной функции.
При оценке нелинейной модели ARX программное обеспечение вычисляет значения параметра модели, такие как L, r, d, Q и другие параметры, задающие g.
Получившиеся нелинейные модели ARX idnlarx
объекты, которые хранят все данные модели, включая регрессоры модели и параметры выходной функции. Для получения дополнительной информации об этих объектах, смотрите Нелинейные Структуры модели.
idnlarx
и idnlhw
отображение имен объектов не рекомендуется.Не рекомендуемый запуск в R2021b
Начиная в R2021b, объекты отображения (также известный как нелинейность) используемый в нелинейных компонентах idnlarx
и idnlhw
объекты были переименованы. В следующей таблице перечислены смены имени.
Имя Pre-R2021b | Имя R2021b |
---|---|
wavenet | idWaveletNetwork |
sigmoidnet | idSigmoidNetwork |
treepartition | idTreePartition |
customnet | idCustomNetwork |
saturation | idSaturation |
deadzone | idDeadZone |
pwlinear | idPiecewiseLinear |
poly1d | idPolynomial1D |
unitgain | idUnitGain |
linear | idLinear |
neuralnet | idFeedforwardNetwork |
Скрипты со старыми названиями все еще обычно запускаются, несмотря на то, что они произведут предупреждение. Рассмотрите использование новых имен для продолжения совместимости с недавно разработанными оценками и алгоритмами. Нет никаких планов исключить использование этих имен объектов в это время
idnlarx
свойства не рекомендуются.Не рекомендуемый запуск в R2021a
Запуск в R2021a, нескольких свойствах idnlarx
были изменены или заменены.
Эти изменения влияют на синтаксисы в обоих idnlarx
и nlarx
. Использованию pre-R2021a свойств в следующей таблице препятствуют. Однако программное обеспечение все еще принимает синтаксисы вызова, которые включают эти свойства. Нет никаких планов исключить эти синтаксисы в это время. Синтаксис команд, который использует порядки модели ARX, продолжается быть рекомендуемым синтаксисом.
Свойство Pre-R2021a | Свойство R2021a | Использование |
---|---|---|
Модель ARX заказывает na,nb,nk | Regressors , который может включать linearRegressor , polynomialRegressor , и customRegressor объекты. |
Вы можете значения более не заявки на изменение в существующем |
customRegressors | Regressors | Используйте polynomialRegressor или customRegressor создать объекты регрессора и добавить объекты в Regressors массив. |
NonlinearRegressors | RegressorUsage | RegressorUsage таблица, которая содержит присвоения регрессора на линейные и нелинейные выходные компоненты. Измените присвоения путем изменения соответствующего RegressorUsage записи таблицы. |
Nonlinearity | OutputFcn | Изменение только номинально. Свойство остается объект или массив или возражает, что регрессор карты вводит к выходу. |
Поддержка параллельных вычислений доступна для оценки с помощью lsqnonlin
метод поиска (требует Optimization Toolbox™). Чтобы включить параллельные вычисления, использовать nlarxOptions
, установите SearchMethod
к 'lsqnonlin'
, и набор SearchOptions.Advanced.UseParallel
к true
, как в следующем примере.
opt = nlarxOptions;
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
idnlarx
| nlarxOptions
| isnlarx
| goodnessOfFit
| aic
| fpe
| polynomialRegressor
| linearRegressor
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.