recursiveARMAX

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

Синтаксис

obj = recursiveARMAX
obj = recursiveARMAX(Orders)
obj = recursiveARMAX(Orders,A0,B0,C0)
obj = recursiveARMAX(___,Name,Value)

Описание

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

obj = recursiveARMAX создает Систему object™ для онлайновой оценки параметра одно входа одно выхода (SISO) по умолчанию структура модели ARMAX. Структура модели по умолчанию имеет полиномы порядка 1 и начальных полиномиальных содействующих значений eps.

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

obj = recursiveARMAX(Orders) задает полиномиальные порядки модели ARMAX, которая будет оценена.

obj = recursiveARMAX(Orders,A0,B0,C0) задает полиномиальные порядки и начальные значения полиномиальных коэффициентов. Задайте начальные значения, чтобы потенциально избежать локальных минимумов во время оценки. Если начальные значения малы по сравнению с InitialParameterCovariance по умолчанию значение свойства, и вы уверены в своих начальных значениях, также задаете меньший InitialParameterCovariance.

obj = recursiveARMAX(___,Name,Value) задает дополнительные атрибуты структуры модели ARMAX и рекурсивного алгоритма оценки с помощью одного или нескольких Name,Value парные аргументы.

Описание объекта

recursiveARMAX создает Системный объект для онлайновой оценки параметра моделей SISO ARMAX с помощью рекурсивного алгоритма оценки.

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

После того, как вы создадите Системный объект, вы используете команды, чтобы обработать данные или получить информацию из или об объекте. Системные объекты используют минимум двух команд, чтобы обработать данные — конструктор, чтобы создать объект и step команда, чтобы обновить параметры объекта с помощью данных реального времени. Это разделение объявления от выполнения позволяет вам создать несколько, персистентные, допускающие повторное использование объекты, каждого с различными настройками.

Можно использовать следующие команды с онлайновыми Системными объектами оценки в System Identification Toolbox™:

КомандаОписание
step

Обновите оценки параметра модели с помощью рекурсивных алгоритмов оценки и данных реального времени.

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

release

Разблокируйте Системный объект. Используйте эту команду, чтобы позволить установить ненастраиваемых параметров.

reset

Сбросьте внутренние состояния заблокированного Системного объекта к начальным значениям и оставьте объект заблокированным.

clone

Создайте другой Системный объект с теми же значениями свойства объекта.

Не создавайте дополнительные объекты с помощью синтаксиса obj2 = obj. Любые изменения, внесенные в свойства нового объекта, создали этот путь (obj2) также измените свойства исходного объекта (obj).

isLocked

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

Используйте recursiveARMAX команда, чтобы создать онлайновый Системный объект оценки. Затем оцените параметры модели ARMAX (AB, и C) и выход с помощью step команда с входящими входными и выходными данными, u, и y.

[A,B,C,EstimatedOutput] = step(obj,y,u)

Для recursiveARMAX свойства объектов, смотрите Свойства.

Примеры

свернуть все

Создайте Системный объект для онлайновой оценки параметра модели 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

Задайте порядки модели ARMAX и задержки.

na = 1;
nb = 2;
nc = 1;
nk = 1;

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

obj = recursiveARMAX([na nb nc nk]);

Задайте порядки модели ARMAX и задержки.

na = 1;
nb = 2;
nc = 1;
nk = 1;

Создайте Системный объект для онлайновой оценки модели ARMAX с известными начальными полиномиальными коэффициентами.

A0 = [1 0.5];
B0 = [0 1 1];
C0 = [1 0.5];
obj = recursiveARMAX([na nb nc nk],A0,B0,C0);

Задайте начальную ковариацию параметра.

obj.InitialParameterCovariance = 0.1;

InitialParameterCovariance представляет неопределенность в вашем предположении для начальных параметров. Как правило, InitialParameterCovariance по умолчанию (10000) является слишком большим относительно значений параметров. Это приводит к исходным предположениям, высказанным меньше важности во время оценки. Если вы уверены в начальных предположениях параметра, задаете меньшую начальную ковариацию параметра.

Создайте Системный объект, который использует алгоритм Фильтра Калмана для онлайновой оценки параметра модели ARMAX.

obj = recursiveARMAX([1 2 1 1],'EstimationMethod','KalmanFilter');
obj.ProcessNoiseCovariance = 0.01;

The ProcessNoiseCovariance свойство obj применимо только, когда алгоритм Фильтра Калмана используется для оценки.

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

свернуть все

Порядки модели и задержки модели ARMAX в виде вектора 1 на 4 из целых чисел, [na nb nc nk].

  • na — Порядок полиномиального A (q) в виде неотрицательного целого числа. na представляет количество полюсов в вашей системе.

  • nb — Порядок полиномиального B (q) + 1 в виде положительного целого числа. nb представляет количество, обнуляет в вашей системе плюс 1.

  • nc — Порядок полиномиального C (q) в виде неотрицательного целого числа.

  • nk — Задержка ввода - вывода в виде неотрицательного целого числа. nk количество входных выборок, которые происходят, прежде чем вход влияет на выход. nk описывается как зафиксированные начальные нули полинома B.

Начальное значение полиномиальных коэффициентов в виде векторов-строк из вещественных значений с элементами в порядке возрастающих степеней q-1.

  • A0 — Исходное предположение для коэффициентов полиномиального A (q) в виде 1 на (na+1) вектор с 1 как первый элемент.

  • B0 — Исходное предположение для коэффициентов полиномиального B (q) в виде 1 на (nb+nk) вектор с nk начальные нули.

  • C0 — Исходное предположение для коэффициентов полиномиального C (q) в виде 1 на (nc+1) вектор с 1 как первый элемент.

    Коэффициенты в C0 должен задать устойчивый полином дискретного времени с корнями в единичном диске. Например,

    C0 = [1 0.5 0.5];
    all(abs(roots(C0))<1)
    ans =
    
         1
    

Определение как [], использует значение по умолчанию eps для полиномиальных коэффициентов.

Примечание

Если исходные предположения намного меньше, чем InitialParameterCovariance по умолчанию, 10000, исходные предположения высказаны меньше важности во время оценки. В этом случае задайте меньшую начальную ковариацию параметра.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Используйте Name,Value аргументы, чтобы задать перезаписываемые свойства recursiveARMAX Системный объект во время создания объекта. Например, obj = recursiveARMAX([2 2 1 1],'EstimationMethod','Gradient') создает Системный объект, чтобы оценить модель ARMAX с помощью 'Gradient' рекурсивный алгоритм оценки.

Свойства

recursiveARMAX Свойства системного объекта состоят из и перезаписываемых свойств только для чтения. Перезаписываемые свойства являются настраиваемыми и ненастраиваемыми свойствами. Ненастраиваемые свойства не могут быть изменены, когда объект заблокирован, то есть, после того, как вы используете step команда.

Используйте Name,Value аргументы, чтобы задать перезаписываемые свойства recursiveARMAX объекты во время создания объекта. После создания объекта используйте запись через точку, чтобы изменить настраиваемые свойства.

obj = recursiveARMAX;
obj.ForgettingFactor = 0.99;

A

Предполагаемые коэффициенты полиномиального A (q), возвращенный как вектор-строка из вещественных значений, заданы в порядке возрастающих степеней q-1.

A свойство только для чтения и первоначально пусто после того, как вы создадите объект. Это заполняется после того, как вы будете использовать step команда для онлайновой оценки параметра.

B

Предполагаемые коэффициенты полиномиального B (q), возвращенный как вектор из вещественных значений, заданы в порядке возрастающих степеней q-1.

B свойство только для чтения и первоначально пусто после того, как вы создадите объект. Это заполняется после того, как вы будете использовать step команда для онлайновой оценки параметра.

C

Предполагаемые коэффициенты полиномиального C (q), возвращенный как вектор из вещественных значений, заданы в порядке возрастающих степеней q-1.

C свойство только для чтения и первоначально пусто после того, как вы создадите объект. Это заполняется после того, как вы будете использовать step команда для онлайновой оценки параметра.

InitialA

Начальные значения для коэффициентов полиномиального A (q) порядка naВ виде вектора-строки из длины na+1, с 1 как первый элемент. Задайте коэффициенты в порядке возрастающих степеней q-1.

Если исходные предположения намного меньше, чем InitialParameterCovariance по умолчанию, 10000, исходные предположения высказаны меньше важности во время оценки. В этом случае задайте меньшую начальную ковариацию параметра.

InitialA настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: [1 eps]

InitialB

Начальные значения для коэффициентов полиномиального B (q) порядка nb-1В виде вектора-строки из длины nb+nk, с nk начальные нули. nk задержка ввода - вывода. Задайте коэффициенты в порядке возрастающих степеней q-1.

Если исходные предположения намного меньше, чем InitialParameterCovariance по умолчанию, 10000, исходные предположения высказаны меньше важности во время оценки. В этом случае задайте меньшую начальную ковариацию параметра.

InitialB настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: [0 eps]

InitialC

Начальные значения для коэффициентов полиномиального C (q) порядка ncВ виде вектора-строки из длины nc+1, с 1 как первый элемент. Задайте коэффициенты в порядке возрастающих степеней q-1.

Коэффициенты в InitialC должен задать устойчивый полином дискретного времени с корнями в модульном кругу. Например,

InitialC = [1 0.5 0.5];
all(abs(roots(InitialC))<1)
ans =

     1

Если исходные предположения намного меньше, чем InitialParameterCovariance по умолчанию, 10000, исходные предположения высказаны меньше важности во время оценки. В этом случае задайте меньшую начальную ковариацию параметра.

InitialC настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: [1 eps]

ParameterCovariance

Предполагаемая ковариация P из параметров, возвращенных как N-by-N симметричная положительно-определенная матрица. N является количеством параметров, которые будут оценены. Программное обеспечение вычисляет P при предположении, что остаточные значения (различие между предполагаемыми и измеренными выходными параметрами) являются белым шумом, и отклонение этих остаточных значений равняется 1. ParameterCovariance применимо только когда EstimationMethod 'ForgettingFactor' или 'KalmanFilter'.

Интерпретация P зависит от метода оценки:

  • 'ForgettingFactor'R2 /2 P приблизительно равно ковариационной матрице предполагаемых параметров, где R2 является истинным отклонением остаточных значений.

  • 'KalmanFilter'R2* P ковариационная матрица предполагаемых параметров, и R1/R2 является ковариационной матрицей изменений параметра. Где, R1 является ковариационной матрицей, которую вы задаете в ProcessNoiseCovariance.

ParameterCovariance свойство только для чтения и первоначально пусто после того, как вы создадите объект. Это заполняется после того, как вы будете использовать step команда для онлайновой оценки параметра.

InitialParameterCovariance

Ковариация начального параметра оценивает в виде одного из следующего:

  • Действительная положительная скалярная величина, α — Ковариационной матрицей является N-by-N диагональная матрица с α как диагональные элементы. N является количеством параметров, которые будут оценены.

  • Вектором из действительных положительных скалярных величин, [α 1..., α N] — Ковариационная матрица является N-by-N диагональная матрица, с [α 1..., α N] как диагональные элементы.

  • N-by-N симметричная положительно-определенная матрица.

InitialParameterCovariance представляет неопределенность в начальных оценках параметра. Для больших значений InitialParameterCovariance, меньше важности помещается в начальные значения параметров и больше в результаты измерений в течение начала использования оценки step.

Используйте только когда EstimationMethod 'ForgettingFactor' или 'KalmanFilter'.

InitialParameterCovariance настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: 10000

EstimationMethod

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

  • 'ForgettingFactor' — Алгоритм используется для оценки параметра

  • 'KalmanFilter' — Алгоритм используется для оценки параметра

  • 'NormalizedGradient' — Алгоритм используется для оценки параметра

  • 'Gradient' — Ненормированный алгоритм градиента используется для оценки параметра

Упущение фактора и алгоритмов Фильтра Калмана более в вычислительном отношении интенсивно, чем градиент и ненормированные градиентные методы. Однако у них есть лучшие свойства сходимости. Для получения информации об этих алгоритмах смотрите Рекурсивные алгоритмы для Онлайновой Оценки Параметра.

EstimationMethod ненастраиваемое свойство. Вы не можете изменить его во время выполнения, которое является после того, как объект заблокирован с помощью step команда. Если вы хотите развернуть код с помощью MATLAB Coder™, EstimationMethod может только быть присвоен однажды.

Значение по умолчанию: 'ForgettingFactor'

ForgettingFactor

Забывая фактор, λ, важный для оценки параметра в виде скаляра в области значений (0,1].

Предположим, что система остается приблизительно постоянной по выборкам T0. Можно выбрать λ, таким образом что:

T0=11λ

  • Установка λ = 1 не соответствует “никакому упущению” и оценке постоянных коэффициентов.

  • Установка λ <1 подразумевает, что прошлые измерения являются менее значительными для оценки параметра и могут быть “забыты”. Установите λ <1 оценивать изменяющиеся во времени коэффициенты.

Типичный выбор λ находится в области значений [0.98 0.995].

Используйте только когда EstimationMethod 'ForgettingFactor'.

ForgettingFactor настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: 1

EnableAdapation

Включите или отключите оценку параметра в виде одного из следующего:

  • true или 1step команда оценивает значения параметров для того временного шага и обновляет значения параметров.

  • false или 0step команда не обновляет параметры для того временного шага и вместо этого выводит последнюю ориентировочную стоимость. Можно использовать эту опцию, когда система переходит к режиму, где значения параметров не меняются в зависимости от времени.

    Примечание

    Если вы устанавливаете EnableAdapation к false, необходимо все еще выполниться step команда. Не пропускать step сохранить значения параметров постоянными, потому что оценка параметра зависит от текущих и прошлых измерений ввода-вывода. step гарантирует, что прошлые данные о вводе-выводе хранятся, даже когда они не обновляют параметры.

EnableAdapation настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: true

DataType

Точность с плавающей точкой параметров в виде одного из следующих значений:

  • 'double' Плавающая точка двойной точности

  • 'single' Плавающая точка с одинарной точностью

Установка DataType к 'single' сохраняет память, но приводит к потере точности. Задайте DataType на основе точности, требуемой целевым процессором, где вы развернете сгенерированный код.

DataType ненастраиваемое свойство. Это может только быть установлено во время объектной конструкции с помощью Name,Value аргументы и не могут быть изменены позже.

Значение по умолчанию: 'double'

ProcessNoiseCovariance

Ковариационная матрица изменений параметра в виде одного из следующего:

  • Действительный неотрицательный скаляр, α — Ковариационной матрицей является N-by-N диагональная матрица с α как диагональные элементы.

  • Вектором из действительных неотрицательных скаляров, [α 1..., α N] — Ковариационная матрица является N-by-N диагональная матрица, с [α 1..., α N] как диагональные элементы.

  • N-by-N симметричная положительная полуопределенная матрица.

N является количеством параметров, которые будут оценены.

ProcessNoiseCovariance применимо когда EstimationMethod 'KalmanFilter'.

Алгоритм фильтра Калмана обрабатывает параметры как состояния динамической системы и оценивает эти параметры с помощью Фильтра Калмана. ProcessNoiseCovariance ковариация шума процесса, действующего на эти параметры. Нулевые значения в шумовой ковариационной матрице соответствуют оценке постоянных коэффициентов. Значения, больше, чем 0, соответствуют изменяющимся во времени параметрам. Используйте большие значения для того, чтобы быстро изменить параметры. Однако большие значения приводят к более шумным оценкам параметра.

ProcessNoiseCovariance настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: 0.1

AdaptationGain

Усиление адаптации, γ, использовало в градиенте рекурсивные алгоритмы оценки в виде положительной скалярной величины.

AdaptationGain применимо когда EstimationMethod 'Gradient' или 'NormalizedGradient'.

Задайте большое значение для AdaptationGain когда ваши измерения имеют высокое отношение сигнал-шум.

AdaptationGain настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: 1

NormalizationBias

Сместите в масштабировании усиления адаптации, используемом в 'NormalizedGradient' метод в виде неотрицательного скаляра.

NormalizationBias применимо когда EstimationMethod 'NormalizedGradient'.

Нормированный алгоритм градиента делит усиление адаптации на каждом шаге квадратом 2D нормы вектора градиента. Если градиент близко к нулю, это может вызвать скачки в предполагаемых параметрах. NormalizationBias термин, введенный в знаменателе, чтобы предотвратить эти скачки. Увеличьте NormalizationBias если вы наблюдаете скачки в предполагаемых параметрах.

NormalizationBias настраиваемое свойство. Можно изменить его, когда объект находится в заблокированном состоянии.

Значение по умолчанию: eps

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

свернуть все

Системный объект для онлайновой оценки параметра модели ARMAX, возвращенной как a recursiveARMAX Системный объект. Этот объект создается с помощью заданных порядков модели и свойств. Использование step команда, чтобы оценить коэффициенты полиномов модели ARMAX. Можно затем получить доступ к предполагаемым коэффициентам и ковариации параметра с помощью записи через точку. Например, введите obj.A просмотреть предполагаемые коэффициенты полинома A.

Больше о

свернуть все

Структура модели ARMAX

ARMAX (Авторегрессивное Скользящее среднее значение с Дополнительным Входом) структура модели:

y(t)+a1y(t1)++anay(tna)=     b1u(tnk)++bnbu(tnknb+1)+             c1e(t1)++cnce(tnc)+e(t)

Более компактный способ записать разностное уравнение

A(q)y(t)=B(q)u(tnk)+C(q)e(t)

где

  • y(t) — Выведите во время t

  • na — Количество полюсов

  • nb — Количество обнуляет плюс 1

  • nc — Количество коэффициентов C

  • nk — Количество входных выборок, которые происходят перед входом, влияет на выход, также названный потерей времени в системе

  • y(t1)y(tna) — Предыдущие выходные параметры, от которых зависит текущая производительность

  • u(tnk)u(tnknb+1) — Предыдущие и задержанные входные параметры, от которых зависит текущая производительность

  • e(t1)e(tnc) — Значение воздействия белого шума

Параметры na, nb, и nc порядки модели ARMAX и nk задержка. q является оператором задержки. А именно,

A(q)=1+a1q1++anaqna

B(q)=b1+b2q1++bnbqnb+1

C(q)=1+c1q1++cncqnc

Советы

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

Расширенные возможности

Введенный в R2015b