Alles, was ich zu tun versuche, ist die Autokorrelation eines Arrays jx zu berechnen, für die ich die folgende Formel verwenden,Berechnung Autokorrelationsfunktion mit Python
wobei n die Zeit ist, Ich möchte die Autokorrelationsfunktion berechnen, Mt
ist die maximale Zeit und tk
sind Zeitschritte, die von 1
bis Mt-n
laufen.
Dies ist der Code, den ich geschrieben habe. Ich überprüfe mein Programm mit einem einfachen Array jx=linspace(1,10,20)
. Ich mache auch das Programm die Autokorrelationswerte für verschiedene n
speichern und plotten sie mit 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()
Aber es gibt auch die folgende Fehlermesssage:
RuntimeWarning: invalid value encountered in double_scalars
avg = Sum*1.0/(Mt-n)
Wohin gehe ich falsch?
Ich bin völlig neu in der Korrelation. Kann ich es einfacher machen? – kanayamalakar