Корреляция векторных данных с NumPy

У меня есть временной ряд векторных данных - каждая точка является двухмерным вектором. Я хотел бы рассчитать автокорреляцию (или что-то в этом роде - извините, если я здесь неправильно использую язык). Допустим, вектор в момент времени t равен v (t). Я хочу рассчитать произведение векторной точки так, чтобы моя корреляция выглядела так:

C (T) = ∑ v⃗ (t) · v⃗ (t + T)

суммируются по всем t st v (t) и v(t+T) существуют.

Есть ли чистый, компактный способ сделать это с NumPy? (С удовольствием попробую ответить на вопросы Сципиона и т.д.). Спасибо.

1 ответ

Решение

Я приду v имеет следующий формат:

v = numpy.array( [[1,2], [4,2], [15,34], [2,3]] )

Извлеките два компонента:

v1 = v[:,0]
v2 = v[:,1]

Затем используйте коррелят для вычисления корреляции по компонентам:

C = numpy.correlate(v1,v1,'full') + numpy.correlate(v2,v2,'full')

Вам понадобится только половина результата, так как корреляция симметрична. Правильная половина будет:

C = C[(len(C)/2):]
Другие вопросы по тегам