матрица автокорреляции с порядком в Python

У меня есть уравнение матрицы автокорреляции с задержкой, необходимой для анализа lpc:

(щелкните, чтобы загрузить изображение): r_{l}(m) =\sum_{n=0}^{N-  1-m}{\overline{x}_{l}(n)\overline{x}_{l}(n+m)}, m=0,1,...p

Я написал методы:

def autocorr_matrix(x,order):
    R = numpy.zeros((order, order))
    for i in range(0,order):
        for j in range(0,order):
            R[i,j] = autocorrelate(x, abs(i-j))
    return R
def autocorrelate(x,lag):
    return numpy.correlate(x[0:len(x)-lag],x[lag:len(x)])

это правильное решение? Кто-нибудь знает, как я могу проверить результаты этих методов?


person Mathieus    schedule 29.01.2020    source источник
comment
Отвечает ли это на ваш вопрос? Оцените автокорреляцию с помощью Python   -  person Martino    schedule 29.01.2020
comment
спасибо но нет. По ссылке в результате получается неограниченный вектор автокорреляции. В моем уравнении матрица ограничена порядком lpc   -  person Mathieus    schedule 29.01.2020


Ответы (1)


Чтобы проверить свои результаты, вы можете использовать два метода:

1- Создайте два синусоидальных сигнала со сдвигом фазы и посмотрите, может ли ваш код измерить корреляцию или нет.

2- Используйте некоторые надежные библиотеки для корреляции и проверьте свои результаты. я использую библиотеку statsmodel: statsmodel.org

from statsmodels.tsa.stattools import acf,ccf

acf для автокорреляции и ccf для взаимной корреляции.

person Nosratullah Mohammadi    schedule 29.01.2020