polynomialRegressor

Задайте полиномиальный регрессор для нелинейной модели ARX

Описание

Полиномиальные регрессоры являются полиномами, которые состоят из задержанных переменных ввода и вывода. Например, y (t –1) 2 и y (t –1) u (t –1) является и полиномиальными регрессорами с порядками 2 и переменными задержками одной выборки. polynomialRegressor объект инкапсулирует набор полиномиальных регрессоров. Используйте polynomialRegressor объекты, когда вы создаете нелинейные модели ARX с помощью idnlarx или nlarx. Можно задать polynomialRegressor объекты наряду с linearRegressor и customRegressor объекты и комбинируют их в один объединенный набор регрессора.

Создание

Описание

пример

pReg = polynomialRegressor(Variables,Lags) создает polynomialRegressor объект порядка 2, который содержит выход и входные имена в Переменных и соответствующие задержки в Задержках. Например, если Variables содержит 'y' и lags содержит соответствующий вектор задержки [2 4], затем регрессоры то использование 'y' y (t –2) 2 и y (t –4) 2.

пример

pReg = polynomialRegressor(Variables,Lags,Order) создает polynomialRegressor объект порядка Order .

пример

pReg = polynomialRegressor(Variables,Lags,Order,UseAbsolute) задает в UseAbsolute использовать ли абсолютные значения переменных, чтобы создать регрессоры.

пример

pReg = polynomialRegressor(Variables,Lags,Order,UseAbsolute,AllowVariableMix) задает в AllowVariableMix позволить ли несколько переменных в формулах регрессора. Например, если Variables равно {'y','u'}, Lags равно {1,1}, и Order равно 2, затем значение true для AllowVariableMix результаты во включении смешано-переменного регрессора y (t –1) u (t –1), наряду с одно-переменными регрессорами y (t –1) 2 и u (t –1) 2.

пример

pReg = polynomialRegressor(Variables,Lags,Order,UseAbsolute,AllowVariableMix,AllowLagMix) задает в AllowLagMix позволить ли различные задержки в формулах регрессора. Например, если Variables равно {'y','u'}, Lags равно {2,[0 3]}, Order равно 2, и AllowVariableMix равно false, затем значение true для AllowLagMix результаты во включении регрессора смешанной задержки u (t) u (t –3), наряду с регрессорами уникальной задержки y (t –2) 2, u (t) 2, и u (t –3) 2. Обратите внимание на то, что, если вы устанавливаете AllowVariableMix к true, затем набор регрессора будет также включать y (t –2) u (t) и y (t –2) u (t –3).

Свойства

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

Имена выходной и входной переменной в виде массива ячеек строк или массива ячеек это ссылается на OutputName и InputName свойства iddata объект. Каждая запись должна быть строкой без специальных символов кроме пробела. Для примера использования этого свойства смотрите Оценку Нелинейная Модель ARX с Полиномиальными Регрессорами.

Пример: {'y1','u1'}

Пример: [z.OutputName; z.InputName]'

Задержки в каждой переменной в виде 1 nv массивом ячеек неотрицательных целочисленных векторов-строк, где n v является общим количеством переменных регрессора. Каждый вектор-строка содержит n r целые числа, которые задают n r задержки регрессора для соответствующей переменной. Например, предположите, что вы хотите следующие регрессоры:

  • Выходная переменная y1: y1 (t –1) 2 и y1 (t –2) 2

  • Входная переменная u1: u1 (t –3) 2

Чтобы получить эти задержки, установите Lags к {[1 2],3}.

Если задержка соответствует выходной переменной idnlarx модель, минимальная задержка должна быть больше или быть равна 1.

Для примера использования этого свойства смотрите Оценку Нелинейная Модель ARX с Полиномиальными Регрессорами.

Пример: {1 1}

Пример: {[1 2],[1,3,4]}

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

Для примера установки этого свойства смотрите Абсолютное значение Использования в Полиномиальном Наборе Регрессора.

Пример: [true,false]

Смешанный индикатор переменных, который определяет, использовать ли несколько переменных в формулах регрессора, таких как y (t –1) u (t –1) в виде логического вектора с длиной, равной количеству переменных.

Для примера установки этого свойства смотрите Использование Несколько Переменных в Полиномиальном Термине Регрессора.

Пример: [true,false]

Смешанный индикатор задержки, который определяет, использовать ли различные задержки в формулах регрессора, таких как u (t) u (t –3) в виде логического вектора с длиной, равной количеству переменных.

Установить это свойство для существующей нелинейной модели ARX sys, используйте запись через точку, как показано в следующей команде.

Для примера установки этого свойства смотрите Использование Смешанные Задержки в Полиномиальном Термине Регрессора.

Пример: [true,false]

Имя переменной времени в виде допустимого имени переменной MATLAB®, которое отлично от значений в Variables.

Пример: 'ClockTime'

Примеры

свернуть все

Загрузите данные и создайте iddata объект z с шагом расчета 0,1 секунд.

load twotankdata y u
z = iddata(y,u,'Ts',0.1);

Задайте полиномиальные регрессоры, которые имеют формы u(t-2)2, u(t-4)2, и y(t-1)2.

Используйте свойства z задавать имена переменных.

Variables = [z.OutputName;z.InputName];

Задайте задержки.

Lags = {1,[2 4]};

Создайте регрессор. Порядком по умолчанию является 2.

pReg = polynomialRegressor(Variables,Lags)
pReg = 
Order 2 regressors in variables y1, u1
               Order: 2
           Variables: {'y1'  'u1'}
                Lags: {[1]  [2 4]}
         UseAbsolute: [0 0]
    AllowVariableMix: 0
         AllowLagMix: 0
        TimeVariable: 't'

  Regressors described by this set

Используйте pReg оценить нелинейную модель ARX.

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

Regressors:
  Order 2 regressors in variables y1, u1
  List of all regressors

Output function: Wavelet Network with 66 units

Sample time: 0.1 seconds

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

Просмотрите регрессоры.

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

Задайте регрессор полинома третьего порядка u1(t-2)3.

Variables = 'u1';
Lags = 2;
Order = 3;
pReg = polynomialRegressor(Variables,Lags,Order)
pReg = 
Order 3 regressors in variables u1
               Order: 3
           Variables: {'u1'}
                Lags: {[2]}
         UseAbsolute: 0
    AllowVariableMix: 0
         AllowLagMix: 0
        TimeVariable: 't'

  Regressors described by this set

Создайте полиномиальный набор регрессора второго порядка, который использует задержки 3, 10, и 100 в переменной y1 и задержки 0 и 4 в переменной u1.

vars = {'y1','u1'};
lags = {[3 10 100],[0,4]};

Укажите что y1 использование регрессора абсолютное значение y1.

UseAbs = [true,false];

Создайте полиномиальный регрессор.

reg = polynomialRegressor(vars,lags,2,UseAbs)
reg = 
Order 2 regressors in variables y1, u1
               Order: 2
           Variables: {'y1'  'u1'}
                Lags: {[3 10 100]  [0 4]}
         UseAbsolute: [1 0]
    AllowVariableMix: 0
         AllowLagMix: 0
        TimeVariable: 't'

  Regressors described by this set

Создайте полиномиальный набор регрессора, который включает условия y1(t-1)2, u1(t-1)2, и y1(t-1)u1(t-1).

Задайте переменные и задержки.

vars = {'y1','u1'};
lags = {1, 1};

Укажите, что создаются смешано-переменные регрессоры.

mixvar = true;

Создайте полиномиальный регрессор второго порядка с помощью mixvar. Установите четвертое положение, которое представляет UseAbsolute свойство, к false.

reg = polynomialRegressor(vars,lags,2,false,mixvar)
reg = 
Order 2 regressors in variables y1, u1
               Order: 2
           Variables: {'y1'  'u1'}
                Lags: {[1]  [1]}
         UseAbsolute: [0 0]
    AllowVariableMix: 1
         AllowLagMix: 0
        TimeVariable: 't'

  Regressors described by this set

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

reg1 = polynomialRegressor(vars,lags);
reg1.AllowVariablemix = true
reg1 = 
Order 2 regressors in variables y1, u1
               Order: 2
           Variables: {'y1'  'u1'}
                Lags: {[1]  [1]}
         UseAbsolute: [0 0]
    AllowVariableMix: 1
         AllowLagMix: 0
        TimeVariable: 't'

  Regressors described by this set

Используйте reg1 в нелинейной модели ARX.

load twotankdata y u;
z = iddata(y,u,'Ts',0.1);
sys = nlarx(z,reg1);

Просмотрите регрессоры.

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

Регрессоры включают смешано-переменные условия.

Задайте полиномиальный набор регрессора, который включает термин формы u(t)u(t-3).

Задайте имена переменных и задержки.

vars = {'y1','u1'};
lags = {2,[0 3]};

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

reg = polynomialRegressor(vars,lags);

Укажите, что использование регрессора смешало задержки.

reg.AllowLagMix = true;

Используйте набор регрессора в нелинейной модели ARX.

load twotankdata y u;
z = iddata(y,u,'Ts',0.1);
sys = nlarx(z,reg);

Просмотрите регрессоры.

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

Регрессоры включают термин смешанной задержки.

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

load twotankdata y u
z = iddata(y,u,'Ts',0.1);

Задайте полиномиальные регрессоры, которые имеют формы u(t-2)2 и u(t-4)2. Также задайте линейный регрессор формы y(t-1).

Задайте входную задержку.

uLags = {[2 4]};

Задайте полиномиальные регрессоры. Порядком регрессора по умолчанию является 2.

pReg = polynomialRegressor(z.InputName,uLags);

Укажите, что выход изолирует и задает линейный регрессор.

lLags = 1;
lReg = linearRegressor(z.OutputName,lLags);

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

reg = [pReg;lReg]
reg=2×1 object
[2 1] array of polynomialRegressor, linearRegressor objects.
------------------------------------
1. Order 2 regressors in variables u1
               Order: 2
           Variables: {'u1'}
                Lags: {[2 4]}
         UseAbsolute: 0
    AllowVariableMix: 0
         AllowLagMix: 0
        TimeVariable: 't'

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

  Regressors described by this set

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

Regressors:
  1. Linear regressors in variables y1
  2. Order 2 regressors in variables u1
  List of all regressors

Output function: Wavelet Network with 21 units

Sample time: 0.1 seconds

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

Просмотрите регрессоры.

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

Загрузите данные об оценке 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)'}

Смотрите также

| | | |

Введенный в R2021a