我所要做的就是计算一个数组jx的自相关,我用下面的公式
其中n是我希望计算自相关函数的时间,Mt
是最大时间,tk
是从1
到{
这是我写的代码。我用一个简单数组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()
但它也会返回以下错误消息:
^{pr2}$我哪里出错了?在
你好像被零除了。它是这样工作的:
1)在}
for n in linspace(0,Mt-1,Mt):
行中有{2)所以,在下一行
ac=Hcacf(n+1)
中,您调用函数Hcacf(Mt)
3)但是在这个函数
Hcacf
中有一行avg = Sum*1.0 / (Mt-n)
。它是可以被零除的地方。在要修复它,可以排除第一行中间隔的端点。尝试用以下行替换它:
相关问题 更多 >
编程相关推荐