Pythonic方法找到离散自相关函数

时间:2016-05-10 11:30:58

标签: python correlation

我想评估自相关函数, enter image description here 当积分可以被替换时,在离散化版本中 enter image description here

我已编写以下代码来计算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工具更快地完成同样的过程吗?

2 个答案:

答案 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,并在最后使用因子进行乘法运算吗?你如何对待无限支持?你不需要一些收敛条件(只是猜测......)?