exponenta event banner

recursiveARMA

Создание объекта System для оперативной оценки параметров модели 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 создает объект System для оперативной оценки параметров одиночных выходных моделей ARMA с использованием алгоритма рекурсивной оценки.

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

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

С интерактивными объектами системы оценки в Toolbox™ Идентификация системы можно использовать следующие команды:

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

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

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

release

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

reset

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

clone

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

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

isLocked

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

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

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

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

Примеры

свернуть все

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

obj = recursiveARMA;

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

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

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;

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

obj = recursiveARMA([na nc]);

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

na = 2;
nc = 1;

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

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

Укажите исходный параметр ковариации.

obj.InitialParameterCovariance = 0.1;

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

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

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

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

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

InitialC

Начальные значения коэффициентов многочлена C (q) порядкаnc, указанный как вектор строки длины 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-на-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-на-N, с α в качестве диагональных элементов. N - количество оцениваемых параметров.

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

  • N-на-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 или 1- step команда оценивает значения параметров для этого временного шага и обновляет значения параметров.

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

    Примечание

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

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

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

DataType

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

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

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

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

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

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

ProcessNoiseCovariance

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

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

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

  • N-на-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 для просмотра расчетных коэффициентов полинома А.

Подробнее

свернуть все

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

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

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

где,

A (q) = 1 + a1q 1 +... + anaq − na

C (q) = 1 + c1q 1 +... + cncq − nc

Здесь,

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

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

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

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

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

Совет

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

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

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