Все, что я пытаюсь сделать, это вычислить авто корреляцию с JX массива, для которого я использую следующую формулу,Вычисление автокорреляционной функции с Python
где п есть время, при котором Я хочу рассчитать функцию автокорреляции, Mt
- максимальное время, а tk
- это временные шаги от 1
до Mt-n
.
Это код, который я написал. Я проверяю свою программу простым массивом jx=linspace(1,10,20)
. Я также делаю программу сохранять значения автокорреляции для разных n
и строить их с помощью n
.
from numpy import *
from pylab import*
jx=linspace(1,10,20)
Mt=len(jx)
def Hcacf(n):
Sum=0.0
coeff1=0
while coeff1 < (Mt-n) :
Sum = Sum + jx[coeff1]*jx[coeff1+n]# + jy[coeff1]*jy[coeff1+n]
coeff1=coeff1+1
avg = Sum*1.0/(Mt-n)
return avg
autocorrelation=[]
for n in linspace(0,Mt-1,Mt):
ac=Hcacf(n+1)
autocorrelation.append(ac)
lag=linspace(0,Mt-1,Mt)
plot(lag,autocorrelation,marker='o')
show()
Но она также возвращает следующее messsage об ошибке:
RuntimeWarning: invalid value encountered in double_scalars
avg = Sum*1.0/(Mt-n)
Где я буду неправильно?
Я совершенно не знаком с корреляцией. Могу ли я сделать это более простым способом? – kanayamalakar