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

arcov

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

Библиотека

EngeeDSP

Синтаксис

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

  • a,e = arcov(x,p) — возвращает нормированные параметры авторегрессии (АР) a, соответствующие модели порядка p для входного массива x, где x предполагается выходом АР-системы, управляемой белым шумом. Этот метод минимизирует ошибку прямого предсказания по методу наименьших квадратов.

    Также возвращает расчетную дисперсию e входного белого шума.

Аргументы

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

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

Details

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

Типы данных

Float32, Float64

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

Да

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

Details

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

Типы данных

Float32, Float64

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

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

Details

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

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

Details

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

Примеры

Оценка параметров с использованием метода ковариации

Details

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

import EngeeDSP.Functions: randn,filter,arcov

A = [1 -2.7607 3.8106 -2.6535 0.9238]
y = filter(1,A,0.2*randn(1024,1))
arcoeffs = arcov(y,4)[1]
1×5 Matrix{Float64}:
 1.0  -2.77456  3.8419  -2.68565  0.936713

Сгенерируем 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] = arcov(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)

arcov 1

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

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

coeffs,variances = arcov(Y,4)

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

arcov 2

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

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

Details

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

Пусть стационарный в широком смысле случайный процесс, полученный путем фильтрации белого шума дисперсии с помощью системной функции . Если — спектральная плотность мощности , тогда

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