我已编写以下代码来计算n的总和,但无法理解如何继续进行。
from pylab import*
from numpy import*
jx=random.random(100000)
Mt=len(jx)
def Hcacf(n):
Sum=0.0
coeff1=0
while coeff1 < (Mt-n) :
Sum = Sum + jx[coeff1]*jx[coeff1+n]
coeff1=coeff1+1
avg = Sum*1.0 / (Mt-n)
return avg
autocorrelation=[]
for n in linspace(0, Mt-1, num=Mt, endpoint=False):
ac=Hcacf(n+1)
autocorrelation.append(ac)
lag=linspace(0,Mt-1,Mt)
plot(lag,autocorrelation,marker='o')
show()
但是需要很长时间才能运行。有人可以建议我使用pythonic工具更快地完成同样的过程吗?
答案 0 :(得分:2)
此link应该回答您的问题。本质上,引用链接中的答案,您可以使用np.correlate
定义自相关函数,如下所示
import numpy as np
def AutoCorrelation(x):
x = np.asarray(x)
y = x-x.mean()
result = np.correlate(y, y, mode='full')
result = result[len(result)//2:]
result /= result[0]
return result
答案 1 :(得分:0)
你不能只在函数上使用numpy.correlate
,并在最后使用因子进行乘法运算吗?你如何对待无限支持?你不需要一些收敛条件(只是猜测......)?