矢量作为自相关函数的结果

时间:2014-12-13 01:04:05

标签: python numpy scipy

我正在努力实现自相关功能。我知道如何计算给定矢量偏移给定值的自相关的总结果。但我不知道如何将结果作为一个完整的"矢量,即自相关函数。这是我的代码:

'''
Calculate the autocorrelation coefficient.
'''

import numpy as np

Xi = np.array([1, 2, 3])
N = np.size(Xi)
k = 2
Xs = np.average(Xi)

def autocovariance(Xi, N, k, Xs):
    autoCov = 0
    for i in np.arange(0, N-k):
        autoCov += ((Xi[i+k])-Xs)*(Xi[i]-Xs)
    return (1/(N-1))*autoCov

def autocorrelation():
    return autocovariance(Xi, N, k, Xs) / autocovariance(Xi, N, 0, Xs)

print("Autocorrelation:", autocorrelation())

...现在我希望它返回一个向量[-0.5 0. 1. 0. -0.5]。我无法弄清楚我错过了什么。我根据离散信号的自相关方程实现了上述函数,即:

enter image description here

......正常化后......

enter image description here

我该怎么办,允许我的脚本将结果作为自相关函数的向量返回?

PS当然我知道numpy.correlate(),但我想自己编写各种自相关函数的实现,以了解它实际上是如何工作的。

1 个答案:

答案 0 :(得分:-1)

问题解决了。我所做的是计算k范围内<|-k|;k> k属于N+ sum {0}的每个{{1}}值的自相关系数。就是这样。