getreg

Выражения регрессора и численные значения в нелинейной модели ARX

Синтаксис

Rs = getreg(model)
Rm = getreg(model,data)
Rm = getreg(model,data,init)
Rm = getreg(___,'Type',regressorType)

Описание

Rs = getreg(model) возвращает выражения для вычислительных регрессоров в нелинейной модели ARX. model idnlarx объект. Типичное использование матриц регрессии, созданных getreg должен сгенерировать входные данные, когда это необходимо, чтобы оценить выход функции отображения, такой как idWaveletNetwork использование evaluate. Например, следующая пара команд оценивает выход функции отображения model.

Regressor_Value = getreg(model,data,'z')
y = evaluate(model.OutputFcn,RegressorValue)
Эти команды эквивалентны команде:
y = predict(model,data,1,predictOptions('InitialCondition','z'))

Rm = getreg(model,data) возвращает значения регрессора как timetable для заданного набора данных ввода/вывода data.

Rm = getreg(model,data,init) использует начальные условия, которые заданы в init. Первый N строки каждой матрицы регрессора зависят от начальных состояний init, где N максимальная задержка регрессоров (см. getDelayInfo).

Rm = getreg(___,'Type',regressorType) возвращает имена регрессоров заданного regressorType. Например, используйте команду Rm = getreg(model,'Type','input') возвратить имена только входных регрессоров.

Входные параметры

data

iddata объект, содержащий результаты измерений или числовую матрицу, которая содержит значения выходных и входных переменных в порядке [model.OutputName model.InputName].

init

Начальные условия ваших данных:

  • 'z' (значение по умолчанию) задает нулевое начальное состояние.

  • NaN обозначает неизвестные начальные условия.

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

  • iddata объект, содержащий выборки ввода и вывода в моменты времени прежде к первой выборке в data. Когда iddata объект содержит больше выборок, чем максимальная задержка модели, только новые выборки используются. Требуемое количество отсчетов равно max(getDelayInfo(model)).

model

iddata объект, представляющий нелинейную модель ARX.

regressorType

Тип регрессора, чтобы возвратиться в виде одного из следующего:

  • 'all' (значение по умолчанию) — Все регрессоры

  • 'input' — Только введите регрессоры

  • 'output' — Только выведите регрессоры

  • 'standard' — Только линейные и полиномиальные регрессоры

  • 'custom' — Только пользовательские регрессоры

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

Rm

timetable из значений регрессора для всех или заданного подмножества регрессоров. Каждый столбец в Rm содержит столько же строк, сколько существуют выборки данных. Для модели с nr регрессоры, Rm содержит один столбец для каждого регрессора. Когда data содержит несколько экспериментов, Rm массив ячеек, где каждый элемент соответствует расписанию значений регрессора для эксперимента.

Rs

Выражения регрессора, представленные как массив ячеек из символьных векторов. Например, выражение 'u1(t-2)' вычисляет регрессор путем задержки входного сигнала u1 к двум разам выборки. Точно так же выражение 'y2(t-1)' вычисляет регрессор путем задержки выходного сигнала y2 одной выборкой времени.

Порядок регрессоров в Rs соответствует индексам регрессора в idnlarx свойство объекта model.RegressorUsage.

Примеры

свернуть все

Загрузите выборочные данные u и y.

  load twotankdata;
  Ts = 0.2;

Шаг расчета составляет 0,2 секунды.

Создайте объект данных и используйте сначала 1 000 выборок для оценки.

  z = iddata(y,u,Ts);
  ze = z(1:1000);

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

  model = nlarx(ze,[3 2 1]);

Получите выражения регрессора.

  Rs = getreg(model)
Rs = 5x1 cell
    {'y1(t-1)'}
    {'y1(t-2)'}
    {'y1(t-3)'}
    {'u1(t-1)'}
    {'u1(t-2)'}

Получите значения регрессора.

  Rm = getreg(model,ze)
Rm=1000×5 timetable
     Time      y1(t-1)     y1(t-2)     y1(t-3)     u1(t-1)    u1(t-2)
    _______    ________    ________    ________    _______    _______

    0.2 sec           0           0           0       0          0   
    0.4 sec      0.1003           0           0      10          0   
    0.6 sec    0.094621      0.1003           0      10         10   
    0.8 sec    0.084424    0.094621      0.1003      10         10   
    1 sec      0.081449    0.084424    0.094621      10         10   
    1.2 sec     0.08546    0.081449    0.084424      10         10   
    1.4 sec    0.083002     0.08546    0.081449      10         10   
    1.6 sec     0.08443    0.083002     0.08546      10         10   
    1.8 sec    0.092793     0.08443    0.083002      10         10   
    2 sec      0.099804    0.092793     0.08443      10         10   
    2.2 sec     0.10559    0.099804    0.092793      10         10   
    2.4 sec      0.1081     0.10559    0.099804      10         10   
    2.6 sec     0.12108      0.1081     0.10559      10         10   
    2.8 sec     0.12404     0.12108      0.1081      10         10   
    3 sec       0.13551     0.12404     0.12108      10         10   
    3.2 sec     0.13405     0.13551     0.12404      10         10   
      ⋮

Оцените и постройте выход модели для одного предсказания шага.

  Y = evaluate(model.OutputFcn,Rm.Variables);
  plot(1:1000,Y)
  title('Predicted Model Output Using evaluate')

Figure contains an axes object. The axes object with title Predicted Model Output Using evaluate contains an object of type line.

Предыдущий результат эквивалентен результату, полученному при помощи predict в следующих командах.

  Y_p = predict(model,ze,1,'z');
  Y = Y_p.OutputData;
  plot(Y)
  title('Predicted Model Output Using predict')

Figure contains an axes object. The axes object with title Predicted Model Output Using predict contains an object of type line.

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

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

Поведение изменяется в R2021a

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