exponenta event banner

linearRegressor

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

Описание

Линейный регрессор - это запаздывающая выходная или входная переменная, такая как y (t-1) или u (t-2). Здесь y-член имеет запаздывание, равное 1 образцу, и u-член имеет запаздывание, равное 2 образцам. AlinearRegressor объект инкапсулирует набор линейных регрессоров. Использовать linearRegressor объекты при создании нелинейных моделей ARX с использованием idnlarx или nlarx. linearRegressor обобщает понятие порядков в моделях 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 неотрицательных целочисленных векторов строк, где nv - общее число переменных-регрессоров. Каждый вектор строки содержит целые числа nr, которые определяют задержки nr-регрессора для соответствующей переменной. Например, предположим, что необходимы следующие регрессоры:

  • Выходная переменная 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