我正在研究低密度等离子体中单个微米大小的粒子的运动。我用所谓的长距离显微镜记录了粒子的运动(2726 张图像,fps=60 Hz)。
以 mm 为单位的 x,y 数据可在此处获得:http: //pastebin.com/qdMsaUHD
使用mathematica,我得到以下均方位移(MSD)的对数图:
我是 Python 新手,并搜索了有关如何从文件中读取 2D 坐标、计算和显示 MSD(均值和标准差)的示例。
我已经看到有一些答案显示了如何计算 MSD,但我无法使它们适应我的数据。
如果有人可以向我展示解决我的问题所必需的完整 Python 源代码(包含所有导入),我将不胜感激。
这对我来说将是一个很好的机会,也是一个非常具体的问题,可以开始使用 Python 进行编程。非常感谢您的帮助。
我从答案之一(计算 Python 中 2d 随机游走的均方位移)中尝试了以下内容,但代码产生了错误。
import numpy as np
import matplotlib.pyplot as plt
data= [[49.136926889715, 48.4423791821561],
[48.8104534783146, 51.0491783022365],
[48.5231487166892, 53.3485202014],
[48.2320069851565, 55.2569539728078],
[47.8817794028032, 56.993296770262],
[47.381875792142, 58.179721166033],
...
[45.3409434914228, 49.0259838546922]]
def compute_MSD(path):
totalsize=len(path)
msd=[]
for i in range(totalsize-1):
j=i+1
msd.append(np.sum((path[0:-j]-path[j::])**2)/float(totalsize-j))
msd=np.array(msd)
return msd
result=compute_MSD(data)
plt.plot(result)
plt.show()