LagOp

Создайте полином оператора задержки

Описание

Создайте p - степень, m - размерный полином оператора задержки A (L) = A 0 + A 1L1 + A 2L2 +... + A p Lp путем определения содействующих матриц A 0, …, A p и, опционально, соответствующие задержки. L является lag (или backshift) оператор, таким образом что Ljy t = y tj.

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

Чтобы подбирать динамическую модель, содержащую полиномы оператора задержки к данным, создайте соответствующий объект модели, и затем соответствуйте ему к данным. Для одномерных моделей смотрите arima и estimate; для многомерных моделей смотрите varm и estimate. Для последующего анализа можно создать LagOp объект от получившихся предполагаемых коэффициентов.

Создание

Описание

пример

A = LagOp(coefficients) создает полином оператора задержки A с коэффициентами coefficients, и устанавливает свойство Coefficients.

пример

A = LagOp(coefficients,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, LagOp(coefficients,'Lags',[0 4 8],'Tolerance',1e-10) сопоставляет коэффициенты к задержкам 0, 4, и 8, и устанавливает погрешность включения задержки 1e-10.

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

развернуть все

Изолируйте коэффициенты полинома оператора в виде числового вектора, m-by-m квадратная числовая матрица или вектор ячейки из m-by-m квадратные числовые матрицы.

ЗначениеПолином возвращен LagOp
Числовой вектор из длины p + 1p - степень, 1D полином оператора задержки, где коэффициент (j) коэффициент задержки j – 1
m-by-m квадратная числовая матрицаС 0 степенями, m-D изолирует полином оператора, где coefficient A 0, коэффициент задержки 0
Вектор ячейки Length p + 1 из m-by-m квадратные числовые матрицыp - степень m-D изолирует полином оператора, где коэффициент (j) матрица коэффициентов задержки j – 1

Пример: LagOp(1:3) создает полиномиальный A (L) = 1 + 2L1 + 3L2.

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

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

Пример: 'Lags',[4 8],'Tolerance',1e-10 сопоставляет коэффициенты к задержкам 4 и 8, и устанавливает содействующую погрешность величины 1e-10.

Задержки, сопоставленные с полиномиальными коэффициентами в виде разделенной запятой пары, состоящей из 'Lags' и вектор из уникальных, неотрицательных целых чисел. Lags должен иметь numcoeff элементы, где numcoeff одно из следующего:

  • Если coefficients числовой вектор или вектор ячейки, numcoeff = numel(coefficients). Коэффициент Задержек задержки (j) коэффициенты (j).

  • Если coefficients матрица, numcoeff= 1 .

Пример: 'Lags',[0 4 8 12]

Изолируйте допуск включения в виде разделенной запятой пары, состоящей из 'Tolerance' и неотрицательный числовой скаляр.

Позвольте c быть элементом коэффициента j с самой большой величиной. Если cTolerance, LagOp удаляет коэффициент j от полинома. Следовательно, MATLAB® выполняет следующие действия:

  • Удалите соответствующую задержку из вектора в свойстве Lags.

  • Замените соответствующий коэффициент массива в свойстве Coefficients с нулями (m).

  • Если удаленная задержка является итоговой задержкой в полиноме, MATLAB уменьшает степень полинома до степени следующей самой большой задержки, существующей в полиноме. Например, если MATLAB удаляет задержки 3 и 4 от степени 4 полинома, потому что их содействующие величины ниже Tolerance, получившийся полином имеет степень 2.

Пример: 'Tolerance',1e-10

Свойства

развернуть все

Изолируйте коэффициенты полинома оператора в виде индексированного задержкой массива ячеек числовых скаляров или m-by-m матрицы. Коэффициенты {j} коэффициент задержки j, где целочисленный j≥ 0 . Например, A.Coefficients{0} хранит задержку 0 коэффициентов A.

Lags свойство хранит индексы ненулевых коэффициентов Coefficients.

Это свойство доступно только для чтения.

Полиномиальная степень p в виде неотрицательного числового скаляра. Degree = max(Lags), самая большая задержка сопоставлена с ненулевым коэффициентом.

Типы данных: double

Это свойство доступно только для чтения.

Полиномиальная размерность m в виде положительного числового скаляра. Можно применить полиномиальный A только к m-D переменная временных рядов.

Типы данных: double

Это свойство доступно только для чтения.

Полиномиальные задержки сопоставлены с ненулевыми коэффициентами в виде индексированного задержкой вектора из неотрицательных целых чисел.

Работать со значением Lags, преобразуйте его в стандартный вектор MATLAB путем ввода следующего кода.

lags = A.Lags;

Типы данных: double

Функции объекта

filterПримените полином оператора задержки, чтобы отфильтровать временные ряды
isEqLagOpОпределите если два LagOp объекты являются тем же математическим полиномом
isNonZeroНайдите задержки сопоставленными с ненулевыми коэффициентами LagOp объекты
isStableОпределите устойчивость полинома оператора задержки
minusИзолируйте вычитание полинома оператора
mldivideИзолируйте левое деление полинома оператора
mrdivideИзолируйте правое деление полинома оператора
mtimesИзолируйте умножение полиномов оператора
plusИзолируйте сложение полинома оператора
reflectОтразите коэффициенты полинома оператора задержки вокруг нуля задержки
toCellArrayПреобразуйте объект полинома оператора задержки в массив ячеек

Примеры

свернуть все

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

A(L)=1-0.6L+0.08L2.

A = LagOp([1 -0.6 0.08])
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 -0.6 0.08]
                Lags: [0 1 2]
              Degree: 2
           Dimension: 1

Отобразите коэффициент задержки 0.

a0 = A.Coefficients{0}
a0 = 1

Присвойте ненулевой коэффициент третьей задержке:

A.Coefficients{3} = 0.5
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 -0.6 0.08 0.5]
                Lags: [0 1 2 3]
              Degree: 3
           Dimension: 1

Полиномиальная степень увеличивается до 3.

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

A(L)=1+0.25L4+0.1L8+0.05L12.

nonzeroCoeffs = [1 0.25 0.1 0.05];
lags = [0 4 8 12];
A = LagOp(nonzeroCoeffs,'Lags',lags)
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 0.25 0.1 0.05]
                Lags: [0 4 8 12]
              Degree: 12
           Dimension: 1

Извлеките коэффициенты из полинома оператора задержки и отобразите все коэффициенты от задержек 0 до 12.

allCoeffs = toCellArray(A);         % Extract coefficients
allCoeffs = cell2mat(allCoeffs');
allLags = 0:A.Degree;               % Prepare lags for display

table(allCoeffs,'RowNames',"Lag " + string(allLags))
ans=13×1 table
              allCoeffs
              _________

    Lag 0          1   
    Lag 1          0   
    Lag 2          0   
    Lag 3          0   
    Lag 4       0.25   
    Lag 5          0   
    Lag 6          0   
    Lag 7          0   
    Lag 8        0.1   
    Lag 9          0   
    Lag 10         0   
    Lag 11         0   
    Lag 12      0.05   

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

A(L)=[0.50001000-0.5]+[10.250.1-0.51-0.50.15-0.21]L4.

Phi0 = [0.5 0   0;... 
        0   1   0;...
        0   0   -0.5];

Phi4 = [1       0.25    0.1;...
        -0.5    1       -0.5;...
        0.15    -0.2    1];

Phi = {Phi0 Phi4};
lags = [0 4];

A = LagOp(Phi,'Lags',lags)
A = 
    3-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 2 Non-Zero Coefficients]
                Lags: [0 4]
              Degree: 4
           Dimension: 3

Создайте многомерный полином оператора задержки

Создайте 2D, степень 3 полинома оператора задержки

A(L)=[1001]+[0.50.25-0.10.4]L+[0.050.025-0.010.04]L3.

m = 2;
A0 = eye(m);
A1 = [0.5 0.25; -0.1 0.4];
A3 = 0.1*A1;
Coeffs = {A0 A1 A3};
lags = [0 1 3];

A = LagOp(Coeffs,'Lags',lags)
A = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 3 Non-Zero Coefficients]
                Lags: [0 1 3]
              Degree: 3
           Dimension: 2

Определите полиномиальную устойчивость

Полином оператора задержки устойчив, если величины всех собственных значений его характеристического полинома меньше 1.

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

[tf,evals] = isStable(A)
tf = logical
   1

evals = 6×1 complex

  -0.5820 + 0.1330i
  -0.5820 - 0.1330i
   0.0821 + 0.2824i
   0.0821 - 0.2824i
   0.0499 + 0.2655i
   0.0499 - 0.2655i

Полином инвертирования

Вычислите инверсию A(L) правом, делящим единичную матрицу 2 на 2 на A(L).

Ainv = mrdivide(eye(A.Dimension),A)
Ainv = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 10 Non-Zero Coefficients]
                Lags: [0 1 2 3 4 5 6 7 8 9]
              Degree: 9
           Dimension: 2

Ainv LagOp объект, представляющий инверсию A(L), степень 9 полиномов оператора задержки. В теории инверсия полинома оператора задержки имеет бесконечную степень, но mrdivide допуски содействующей величины обрезают полином.

Умножиться A(L) и его инверсия.

checkinv = Ainv*A
checkinv = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 4 Non-Zero Coefficients]
                Lags: [0 10 11 12]
              Degree: 12
           Dimension: 2

Поскольку обратный расчет возвращает усеченную теоретическую инверсию, продукт checkinv содержит задержки, представляющие остаток. Можно уменьшить mrdivide допуски содействующей величины, чтобы получить обратный полином, который более точен.

Отфильтруйте временные ряды

Произведите 2D временные ряды yt=A(L)et=A0et+A1et-1+A2et-2+A3et-3 путем фильтрации 2D ряда 100 случайных Гауссовых стандартов отклоняется etчерез полином.

T = 100;
e = randn(T,m);
y = filter(A,e);
plot((A.Degree + 1):T,y)
title('Filtered Series')

Figure contains an axes object. The axes object with title Filtered Series contains 2 objects of type line.

y 97 2 матричное представление yt. y имеет p меньше наблюдений, чем e потому что filter требует первого p наблюдения за e инициализировать динамический ряд при создании y(1:4,:).

Введен в R2010a