Документация Engee

aryule

Параметры модели авторегрессии со всеми полюсами — метод Юла — Уокера.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • a,e,rc = aryule(x,p) — возвращает нормированные параметры авторегрессии a, соответствующие модели порядка p для входного массива x.

    Также возвращает расчетную дисперсию e входного белого шума и коэффициенты отражения rc, соответствующие модели авторегрессии.

Аргументы

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

# x — входной массив
вектор | матрица

Details

Входной массив, заданный как вектор или матрица.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# p — порядок модели
положительный целочисленный скаляр

Details

Порядок модели, заданный как целочисленный положительный скаляр. Значение p должно быть меньше количества элементов или строк в x.

Типы данных

Float32, Float64

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

# a — нормированные параметры авторегрессии
вектор-строка | матрица

Details

Нормированные параметры авторегрессии, возвращаемые в виде вектора или матрицы. Если x — матрица, то каждой строке a соответствует столбец x. Аргумент a имеет p+1 столбец и содержит параметры авторегрессии в порядке убывания степеней .

# e — дисперсия белого шума входного сигнала
скаляр | вектор-строка

Details

Дисперсия белого шума входного сигнала, возвращаемая в виде скаляра или вектора-строки. Если x — матрица, то каждому элементу e соответствует столбец x.

# rc — коэффициенты отражения
вектор-столбец | матрица

Details

Коэффициенты отражения, возвращаемые в виде вектора-столбца или матрицы. Если x — матрица, то каждому столбцу rc соответствует столбец x. Аргумент rc имеет p строк.

Примеры

Оценка параметров с помощью метода Юла — Уокера

Details

Используем вектор коэффициентов порождающего полинома для генерации процесса путем фильтрации 1024 отсчетов белого шума. Сбросим генератор случайных чисел, чтобы получить воспроизводимые результаты. Используем метод Юла — Уокера для оценки коэффициентов.

import EngeeDSP.Functions: randn,filter,aryule

A = [1 -2.7607 3.8106 -2.6535 0.9238]
y = filter(1,A,0.2*randn(1024,1))
arcoeffs = aryule(y,4)[1]
1×5 Matrix{Float64}:
 1.0  -2.72272  3.71925  -2.56306  0.886621

Сгенерируем 50 реализаций процесса, каждый раз меняя дисперсию входного шума. Сравним дисперсию, рассчитанную по методу Юла — Уокера, с фактическими значениями.

nrealiz = 50
order = 4
noisestdz = rand(1, nrealiz) .+ 0.5
randnoise = randn(1024, nrealiz)
noisevar = zeros(1, nrealiz)

for k in 1:nrealiz
    y = filter(ones(1), A, noisestdz[k] * randnoise[:, k])
        arcoeffs,noisevar[k],e = aryule(y, order)

end

p=scatter(vec(noisestdz.^2), vec(noisevar),
        marker=:x,
        markerstrokecolor=:blue,
        xlabel="Input",
        ylabel="Estimated",
        title="Noise Variance",
        label="Single channel loop",
        legend=false)

aryule 1

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

Y = filter(1,A,noisestdz.*randnoise)

coeffs,variances,e = aryule(Y,4)

scatter!(p,noisestdz.^2, variances,
        marker=:circle,
        markercolor=:transparent,
        markerstrokecolor=:green,
        markersize=10)

aryule 2

Дополнительно

Модель авторегрессии порядка p

Details

В модели авторегрессии порядка ( ) текущий выход является линейной комбинацией предыдущих выходов плюс входной сигнал белого шума.

Веса на предыдущих выходах минимизируют среднюю квадратичную ошибку предсказания авторегрессии. Если — это текущее значение выхода, а — это входной сигнал с нулевым средним значением белого шума, то модель имеет вид:

Коэффициенты отражения

Details

Коэффициенты отражения — это коэффициенты частичной автокорреляции, масштабированные на −1. Коэффициенты отражения указывают на временную зависимость между и после вычитания предсказания, основанного на промежуточных временных шагах.

Алгоритмы

Для вычисления параметров функция aryule использует рекурсию Левинсона — Дурбина для смещенной оценки отсчетов автокорреляционной последовательности.

Литература

  1. Hayes, Monson H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.