linearRegressor

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

Описание

Линейный регрессор является изолированной выходной или входной переменной, такой как y (t-1) или u (t-2). Здесь, термин y имеет задержку 1 выборки, и термин u имеет задержку 2 выборок. linearRegressor объект инкапсулирует набор линейных регрессоров. Используйте linearRegressor объекты, когда вы создаете нелинейные модели ARX с помощью idnlarx или nlarx. linearRegressor обобщает концепцию orders в моделях ARX, или другими словами, [na nb nk] матрица, чтобы позволить абсолютные значения и задержки, состоящие из нескольких несмежных участков. Используя linearRegressor объекты также позволяют вам объединить линейные регрессоры с полиномиальными и пользовательскими регрессорами в одном наборе регрессора.

Создание

Описание

пример

lReg = linearRegressor(Variables,Lags) создает linearRegressor объект, который содержит выход и входные имена в Variables и соответствующие задержки в Lags.

пример

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

Свойства

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

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

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

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

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

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

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

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

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

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

Пример: {1 1}

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

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

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

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

Пример: 'ClockTime'

Примеры

свернуть все

Задайте линейный регрессор, который эквивалентен матрице порядка модели 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)

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

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

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

UseAbs = [true,false];

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

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

  Regressors described by this set

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