我一直在尝试使用numpy . 我发现的大多数文档都与correlate和convolve等函数有关。但是,对于给定的随机变量 x,这些函数似乎只是计算总和
ACF(dt) = sum_{t=0}^T [(x(t)*x(t+dt)]
而不是平均值
ACF(dt) = mean[x(t)*x(t+dt)]
所以实际上,为了计算自相关函数,需要执行以下操作:
acf = np.correlate(x,x,mode='full')
acf_half = acf[acf.size / 2:]
ldata = len(acf)
acf = np.array([x/(ldata-i) for i,x in enumerate(acf_half)])
当然,我们需要从结果 acf 中减去 mean(x)**2 才能正确。
任何人都可以确认这是正确的吗?