2016-05-10 46 views
0

我想評估自相關函數,在離散版本 enter image description here 當積分可以通過 enter image description herePython化的方式找到離散自相關函數

我寫了下面的代碼來執行計算被替換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工具更快地完成相同的過程嗎?

回答

1

這個link應該回答你的問題。從本質上說,在鏈接引用答案您可以按如下

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 
0

難道你不能只在函數上使用numpy.correlate並且只是在最後乘以因子?你如何對待無限的支持?你不需要一些融合的條件(只是猜測...)?

+0

我不知道如何實現,在這種情況下使用定義np.correlate自相關功能。你能否更詳細地告訴我這件事? – kanayamalakar