exponenta event banner

шаг

Обновление параметров модели и вывод в оперативном режиме с использованием алгоритма рекурсивной оценки

Описание

пример

[EstimatedParameters,EstimatedOutput] = step(obj,y,InputData) обновляет параметры и вывод модели, указанной в системном object™, obj, используя измеренный выход, yи входные данные.

step переводит объект в заблокированное состояние. В заблокированном состоянии невозможно изменить неперестраиваемые свойства объекта, такие как порядок модели, тип данных или алгоритм оценки.

EstimatedParameters и InputData зависят от объекта системы оценки в режиме онлайн:

  • recursiveARstep возвращает оцененные коэффициенты полинома A (q) модели одиночного выходного AR с использованием выходных данных временного ряда.
    [A,EstimatedOutput] = step(obj,y)

  • recursiveARMAstep возвращает оцененный полином A (q) и C (q) коэффициентов модели ARMA с одним выходом, используя выходные данные временного ряда, y.
    [A,C,EstimatedOutput] = step(obj,y)

  • recursiveARXstep возвращает оцененный полином A (q) и B (q) коэффициентов модели SISO или MISO ARX с использованием измеренных входных и выходных данных u и y соответственно.
    [A,B,EstimatedOutput] = step(obj,y,u).

  • recursiveARMAXstep возвращает оцененный полином A (q), B (q) и C (q) коэффициентов модели SISO ARMAX с использованием измеренных входных и выходных данных u и y соответственно.
    [A,B,C,EstimatedOutput] = step(obj,y,u).

  • recursiveOEstep возвращает оцененный полином B (q) и коэффициенты F (q) модели полинома SISO Output-Error с использованием измеренных входных и выходных данных u и y соответственно.
    [B,F,EstimatedOutput] = step(obj,y,u).

  • recursiveBJstep возвращает оцененные коэффициенты полинома B (q), C (q), D (q) и F (q) модели полинома Бокса-Дженкинса SISO с использованием измеренных входных и выходных данных u и y соответственно.
    [B,C,D,F,EstimatedOutput] = step(obj,y,u).

  • recursiveLSstep возвращает оцененные системные параметры, λ, одной выходной системы, которая линейна в оцененных параметрах, используя регрессоры H и выходные данные y.
    [theta,EstimatedOutput] = step(obj,y,H).

Примеры

свернуть все

Создайте объект System для оперативной оценки параметров модели ARMAX.

obj = recursiveARMAX;

Модель ARMAX имеет структуру по умолчанию с многочленами порядка 1 и начальными значениями коэффициента полинома, eps.

Загрузите оценочные данные. В этом примере для иллюстрации используйте набор статических данных.

load iddata1 z1;
output = z1.y;
input = z1.u;

Оценка параметров модели ARMAX в оперативном режиме с использованием step.

for i = 1:numel(input)
[A,B,C,EstimatedOutput] = step(obj,output(i),input(i));
end

Просмотр текущих расчетных значений полинома A коэффициенты.

obj.A
ans = 1×2

    1.0000   -0.8298

Просмотр текущей оценки ковариации параметров.

obj.ParameterCovariance
ans = 3×3

    0.0001    0.0001    0.0001
    0.0001    0.0032    0.0000
    0.0001    0.0000    0.0001

Просмотр текущего расчетного выходного сигнала.

EstimatedOutput
EstimatedOutput = -4.5595

Создайте объект System для оперативной оценки параметров модели ARMAX.

obj = recursiveARMAX;

Модель ARMAX имеет структуру по умолчанию с многочленами порядка 1 и начальными значениями коэффициента полинома, eps.

Загрузите оценочные данные. В этом примере для иллюстрации используйте набор статических данных.

load iddata1 z1;
output = z1.y;
input = z1.u;
dataSize = numel(input);

Оцените параметры модели ARMAX в оперативном режиме, используя алгоритм рекурсивной оценки по умолчанию «Коэффициент забывания». Изменить ForgettingFactor свойство во время оценки оперативного параметра.

for i = 1:dataSize
    if i == dataSize/2
        obj.ForgettingFactor = 0.98;
    end
[A,B,C,EstimatedOutput] = step(obj,output(i),input(i));
end

Система имеет два параметра и представлена следующим образом:

y (t) = a1u (t) + a2u (t-1)

Здесь,

  • u и y - входные и выходные данные в реальном времени соответственно.

  • u (t) и u (t-1) являются регрессорами,H, системы.

  • a1 и a2 - параметры, theta, системы.

Создайте объект System для оперативной оценки с использованием рекурсивного алгоритма наименьших квадратов.

obj = recursiveLS(2);

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

load iddata3
input = z3.u;
output = z3.y;

Создание переменной для хранения u(t-1). Эта переменная обновляется на каждом шаге времени.

oldInput = 0;

Оценка параметров и выходных данных с помощью step и данные «вход-выход», поддерживая текущую пару регрессоров в H. Вызовите step неявно путем вызова obj системный объект с входными аргументами.

for i = 1:numel(input)
    H = [input(i) oldInput];
    [theta, EstimatedOutput] = obj(output(i),H);
    estimatedOut(i)= EstimatedOutput;
    theta_est(i,:) = theta;
    oldInput = input(i);
end

Постройте график измеренных и расчетных выходных данных.

numSample = 1:numel(input);
plot(numSample,output,'b',numSample,estimatedOut,'r--');
legend('Measured Output','Estimated Output');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Measured Output, Estimated Output.

Постройте график параметров.

plot(numSample,theta_est(:,1),numSample,theta_est(:,2))
title('Parameter Estimates for Recursive Least Squares Estimation')
legend("theta1","theta2")

Figure contains an axes. The axes with title Parameter Estimates for Recursive Least Squares Estimation contains 2 objects of type line. These objects represent theta1, theta2.

Просмотр окончательных оценок.

theta_final = theta
theta_final = 2×1

   -1.5322
   -0.0235

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

свернуть все

Системный объект для оперативной оценки параметров, созданный с помощью одной из следующих команд:

step команда обновляет параметры модели, используя алгоритм рекурсивной оценки, указанный в obj и входящие данные ввода-вывода.

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

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

Системный объектТип моделиInputData
recursiveARВременные рядыНеприменимо
recursiveARMAВременные рядыНеприменимо
recursiveARXSISO ARXВещественный скаляр
MISO ARX с N входамиВектор столбца длиной N, заданный как вещественные значения
recursiveARMAXSISOВещественный скаляр
recursiveOESISOВещественный скаляр
recursiveBJSISOВещественный скаляр
recursiveLSСистема одиночного вывода с параметрами системы NpРегрессоры, Н, заданные как вектор действительных значений длины Np

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

свернуть все

Оцененные параметры модели, возвращаемые как векторы вещественных значений. Количество расчетных параметров и т. д. step синтаксис зависит от типа объекта System:

Оперативный объект системы оценкиРасчетные параметры
recursiveAR

Коэффициенты полинома A (q)

recursiveARMA

Коэффициенты полиномов A (q) и C (q)

recursiveARX

Коэффициенты полиномов A (q) и B (q)

recursiveARMAX

Коэффициенты полиномов A (q), B (q) и C (q)

recursiveOE

Полиномы B (q) и F (q)

recursiveBJ

Коэффициенты полиномов B (q), C (q), D (q) и F (q)

recursiveLS

Системные параметры,

Расчетный выходной сигнал, возвращаемый как действительный скаляр. Выход оценивают, используя данные оценки ввода-вывода, текущие значения параметров и алгоритм рекурсивной оценки, указанный в obj.

Совет

  • Начиная с R2016b, вместо использования step для обновления оценок параметров модели можно вызвать объект System с входными аргументами, как если бы это была функция. Например, [A,EstimatedOutput] = step(obj,y) и [A,EstimatedOutput] = obj(y) выполнять эквивалентные операции.

Представлен в R2015b