1

我有一个时间序列的向量数据——每个点都是一个二维向量。我想计算一个自相关(或类似的东西——如果我在这里误用了语言,请原谅)。假设时间 t 的向量是 v(t)。我想要的是计算矢量点积,以便我的相关性看起来像:

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

对所有 t st v(t) 和 v(t+T) 求和。

有没有一种干净、紧凑的方法可以用 numpy 做到这一点?(也很乐意尝试 scipy 等的答案。)谢谢。

4

1 回答 1

2

我将假设v具有以下格式:

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

提取两个组件:

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

然后使用 correlate 计算每个分量的相关性:

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

由于相关性是对称的,因此您只需要一半的结果。正确的一半是:

C = C[(len(C)/2):]
于 2013-12-28T22:56:03.323 回答