用Python计算自相关函数

2024-05-17 05:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我所要做的就是计算一个数组jx的自相关,我用下面的公式

autocorrelation formula

其中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()

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

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

^{pr2}$

我哪里出错了?在


Tags: fromimport程序时间数组acavgautocorrelation
1条回答
网友
1楼 · 发布于 2024-05-17 05:44:34

你好像被零除了。它是这样工作的:

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

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):

相关问题 更多 >