如何将数据分块并计算均方位移?

2024-09-30 10:41:27 发布

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

我想用这里提到的阻塞方案blocking scheme for correlations计算均方位移。其主要思想是将数据存储在链接中提到的具有一定长度的块中。我有形状的数据(101214,3),有10帧包含11214个三维数据点。所以现在我想把每两帧存储在一个块中,然后用它们的运行平均值来计算均方位移。有人知道如何实现这个方法吗

这是数据file,这是我用来计算正常msd的代码

import numpy as np
import numba as nb

@nb.njit
def get_msd_traj_nb1(p):
    result = np.zeros_like(p)
    deltastop = p.shape[1]
    for traj in range(p.shape[0]):
        for dim in range(p.shape[2]):
            for delta in range(1, deltastop):
                thisresult = 0
                for i in range(delta, deltastop):
                    thisresult += (p[traj,i,dim] - p[traj,i-delta,dim])**2
                    result[traj,delta,dim] = thisresult / (deltastop-delta)
    return result

m = get_msd_traj_nb1(dataset)
print(m.shape)

Tags: 数据inimportforasrangeresultdelta

热门问题