MSD均方位移python代码
以下是计算MSD(均方位移)的Python代码:
import numpy as np
def msd(x):
"""计算MSD(均方位移)。
参数:
x : numpy array
一个形如(N, d)的numpy数组,其中N是时间步数,d是维数。
返回值:
msd : numpy array
一个形如(N,)的numpy数组,表示每个时间步的MSD。
参考文献:
https://en.wikipedia.org/wiki/Mean_squared_displacement
"""
N = x.shape[0]
displacement = np.zeros((N, N, x.shape[1]))
for i in range(N):
for j in range(i, N):
displacement[i][j] = x[j] - x[i]
displacement[j][i] = -displacement[i][j]
msd = np.zeros(N)
for i in range(1, N):
msd[i] = np.mean(np.sum(displacement[i:]**2, axis=1))
return msd
这个函数的参数是一个形如(N, d)的numpy数组,其中N是时间步数,d是维数。它返回一个形如(N,)的numpy数组,表示每个时间步的MSD。
原文地址: https://www.cveoy.top/t/topic/bsTo 著作权归作者所有。请勿转载和采集!