recursiveARMAX

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

Синтаксис

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

Описание

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

obj = recursiveARMAX создает object™ System для онлайн-оценки параметров стандартной структуры модели ARMAX с одним входом и одним выходом (SISO). Структура модели по умолчанию имеет полиномы порядка 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 (A, B, и 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-by- (na+1) вектор с 1 в качестве первого элемента.

  • B0 - Начальное предположение для коэффициентов полинома B (q), заданное как 1-by- (nb+nk) вектор с nk начальные нули.

  • C0 - Начальное предположение для коэффициентов полинома C (q), заданное как 1-by- (nc+1) вектор с 1 в качестве первого элемента.

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

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

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

Примечание

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами 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) порядка <reservedrangesplaceholder0>, заданный как вектор-строка длины na+1, с 1 в качестве первого элемента. Задайте коэффициенты в порядке возрастания степеней q-1.

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

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

По умолчанию: [1 eps]

InitialB

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

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

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

По умолчанию: [0 eps]

InitialC

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

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

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

     1

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

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

По умолчанию: [1 eps]

ParameterCovariance

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

Толкование P зависит от метода оценки:

  • 'ForgettingFactor'<reservedrangesplaceholder1> <reservedrangesplaceholder0> * 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 является свойством nontunable. Вы не можете изменить его во время выполнения, то есть после того, как объект заблокирован с помощью step команда. Если вы хотите развернуть код с помощью MATLAB Coder™, EstimationMethod можно назначить только один раз.

По умолчанию: 'ForgettingFactor'

ForgettingFactor

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

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

T0=11λ

  • Установка λ = 1 соответствует «no formetting» и оценке постоянных коэффициентов.

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

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

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

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

По умолчанию: 1

EnableAdapation

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

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

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

    Примечание

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

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

По умолчанию: true

DataType

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

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

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

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

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

По умолчанию: 'double'

ProcessNoiseCovariance

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

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

  • Вектор реальных неотрицательных скаляров, [<reservedrangesplaceholder7> 1..., <reservedrangesplaceholder6> <reservedrangesplaceholder5>] - Ковариационная матрица N N диагональной матрицей, с [<reservedrangesplaceholder2> 1..., <reservedrangesplaceholder1> <reservedrangesplaceholder0>] как диагональные элементы.

  • 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'.

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

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

По умолчанию: eps

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

свернуть все

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