【发布时间】:2012-03-24 21:45:44
【问题描述】:
请您帮助我了解如何计算在给定时间内随机移动的单个粒子的均方位移。我已经阅读了很多关于这方面的文章(包括 Saxton,1991,Single-Particle Tracking: The Distribution of Diffusion Coefficients),但仍然很困惑(没有得到正确的答案)。
首先让我向您展示我是如何做到的,如果我错了,请纠正我:
我这样做的方式如下:
1.从t=0到t=100运行程序
2.计算每个时间步长(即 t=1,2,3,...100)的位移 (s(t)-s(t+tau)) 并将其存储在向量中
3.将数字 2 的答案平方
4.找到3个答案的均值
本质上,这就是我在 Matlab 中所做的事情
%用由 16 个非零点阵点组成的正方形初始化点阵,然后按如下方式计算 MSD:
for t=1:tend
% Allow the particle to move randomly in the lattice. Then do the following
[row,col]=find(lattice>0);
centroid=mean([row col]);
xvec=[xvec centroid(2)];
yvec=[yvec centroid(1)];
k=length(xvec)-1; % Time
dt=1;
diffx = xvec(1:k) - xvec((1+dt):(k+dt));
diffy = yvec(1:k) - yvec((1+dt):(k+dt));
xsquare = diffx.^2;
ysquare = diffy.^2;
MSD=mean(xsquare+ysquare);
end
我试图找到 MSD 以计算扩散系数。请注意,我正在对晶格位置 (16) 的集合进行建模,以表示单个粒子(在生物学上更真实),而不仅仅是一个粒子。我对 for 循环中的评论很简短,因为它很长,但我很高兴将它发送给您。
到目前为止,我得到的 MSD 值非常小(在 0.001-1 的范围内),而我应该得到的值在 (10-50) 的范围内。粒子移动了很远的距离,所以我的 0.001-1 范围肯定是不对的!
这是我试图重现他们形象的文章的摘录:
" 我们首先在 1D 中运行一些模拟 细胞。我们允许细胞移动给定数量的 蒙特卡洛时间步长 (MCS),计算出均方 在那段时间走过的距离,重复这个过程500 次,并评估此 t 的均方距离。 然后我们重复这个过程十次以获得平均值 .选择这种重复的原因是 将运行模拟所需的时间保持在合理的范围内 水平但确保的标准偏差 平均值相对较小 ( 您可以在此处访问文章“从离散到连续的生物细胞运动模型,2004,Turner 等人,Physical Review E”。
非常感谢任何提示。
【问题讨论】:
标签: matlab