recursiveARMA

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

Синтаксис

obj = recursiveARMA
obj = recursiveARMA(Orders)
obj = recursiveARMA(Orders,A0,C0)
obj = recursiveARMA(___,Name,Value)

Описание

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

obj = recursiveARMA создает Системный object™ для оценки оперативного параметра структуры модели ARMA по умолчанию с одним выходом. Структура модели по умолчанию имеет полиномы порядка 1 и начальные значения полиномиальных коэффициентов eps.

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

obj = recursiveARMA(Orders) задает полиномиальные порядки оцениваемой модели ARMA.

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

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

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

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

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

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

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

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

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

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

release

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

reset

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

clone

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

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

isLocked

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

Используйте recursiveARMA команда для создания оперативного системного объекта оценки. Затем оцените параметры модели ARMA (A и C) и выход с помощью step команда с выходными данными y.

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

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

Примеры

свернуть все

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

obj = recursiveARMA;

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

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

load iddata9 z9;
output = z9.y;

Оцените параметры модели ARMA в режиме онлайн с помощью step.

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

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

obj.C
ans = 1×2

    1.0000    0.2315

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

obj.ParameterCovariance
ans = 2×2
10-3 ×

    0.6372   -0.0257
   -0.0257    0.0017

Просмотрите предполагаемый ток выхода.

EstimatedOutput
EstimatedOutput = 11.8121

Задайте порядки модели ARMA.

na = 2;
nc = 1;

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

obj = recursiveARMA([na nc]);

Задайте порядки модели ARMA.

na = 2;
nc = 1;

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

A0 = [1 0.5 0.3];
C0 = [1 0.7];
obj = recursiveARMA([na nc],A0,C0);

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

obj.InitialParameterCovariance = 0.1;

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

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

obj = recursiveARMA([2 1],'EstimationMethod','Gradient');

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

свернуть все

Модели порядков модели ARMA, заданные как вектор 1 на 2 целых чисел, [na nc].

  • na - Порядок полинома A (q), заданный как неотрицательное целое число.

  • nc - Порядок полинома C (q), заданный как неотрицательное целое число.

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

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

  • 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 аргументы для задания свойств, доступных для записи recursiveARMA Системный объект во время создания объекта. Для примера, obj = recursiveARMA([2 1],'EstimationMethod','Gradient') создает Системный объект для оценки модели ARMA с помощью 'Gradient' рекурсивный алгоритм оценки.

Свойства

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

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

obj = recursiveARMA;
obj.ForgettingFactor = 0.99;

A

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

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

C

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

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

InitialA

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

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

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

По умолчанию: [1 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

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

свернуть все

Системный объект для онлайн-оценки параметров модели ARMA, возвращаемый как recursiveARMA Системный объект. Этот объект создается с использованием заданных порядков и свойств модели. Использовать step команда для оценки коэффициентов полиномов модели ARMA. Затем можно получить доступ к предполагаемым коэффициентам и ковариации параметров с помощью записи через точку. Для примера введите obj.A чтобы просмотреть оцененные A полиномиальные коэффициенты.

Подробнее о

свернуть все

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

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

A(q)y(t)=C(q)e(t)

где,

A(q)=1+a1q1++anaqna

C(q)=1+c1q1++cncqnc

Вот,

  • y(t) - Выход в момент t. Данные являются временными рядами, которая не имеет входа каналов и одного выхода канала.

  • na - Количество A полиномиальных коэффициентов

  • nc - Количество C полиномиальных коэффициентов

  • e(t) - Значение нарушения порядка белого шума в момент t

  • q-1 - Оператор сдвига во времени

Совет

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

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

.
Введенный в R2015b