我正在努力实现自相关功能。我知道如何计算给定矢量偏移给定值的自相关的总结果。但我不知道如何将结果作为一个完整的"矢量,即自相关函数。这是我的代码:
'''
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]
。我无法弄清楚我错过了什么。我根据离散信号的自相关方程实现了上述函数,即:
......正常化后......
我该怎么办,允许我的脚本将结果作为自相关函数的向量返回?
PS当然我知道numpy.correlate()
,但我想自己编写各种自相关函数的实现,以了解它实际上是如何工作的。
答案 0 :(得分:-1)
问题解决了。我所做的是计算k
范围内<|-k|;k>
k
属于N+ sum {0}
的每个{{1}}值的自相关系数。就是这样。