gpt4 book ai didi

python - 用Python计算自相关函数

转载 作者:行者123 更新时间:2023-12-01 03:58:25 24 4
gpt4 key购买 nike

我想做的就是计算数组 jx 的自相关性,我使用以下公式,

autocorrelation formula

其中 n 是我希望计算自相关函数的时间,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()

它返回的输出是这样的: enter image description here

但它也返回以下错误消息:

 RuntimeWarning: invalid value encountered in double_scalars
avg = Sum*1.0 / (Mt-n)

我哪里出错了?

最佳答案

看起来你的除数为零。它的工作原理是这样的:

1) 在 for n in linspace(0,Mt-1,Mt): 行中,您有 n==Mt-1,

2) 因此,在下一行 ac=Hcacf(n+1) 中,您调用函数 Hcacf(Mt)

3) 但在这个函数 Hcacf 中,有一行 avg = Sum*1.0/(Mt-n)。这是可以被零除的地方。

要修复此问题,您可以排除第一行中间隔的端点。尝试用这一行替换它:

for n in linspace(0, Mt-1, num=Mt, endpoint=False):

关于python - 用Python计算自相关函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37042786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com