小编Bio*_*MSD的帖子

用MATLAB计算均方位移(msd)

这是生物学家matlab入门课程的一部分.我有一个矩阵的数据点(对于单个粒子!)有4列(时间,x,y,z)和几千行.我想要做的是使用所有时间步长的xyz坐标计算粒子的均方位移.MSD定义为MSD = average(r(t)-r(0))^ 2其中r(t)是粒子在时间t的位置,r(0)是初始位置,所以在某种意义上它是粒子在时间间隔t内行进的距离.这就是我到目前为止所拥有的.我显然是一个MATLAB新手,我真的很感激som帮助/输入.

dx=zeros(length(data),1);   %Create space for displacements.
dy=zeros(length(data),1);
dz=zeros(length(data),1);

for i=1:length(pos) 
    dx(i)=data(i+1,2)-data(1,2);   %Calculate the distance at each time step
    dy(i)=data(i+1,3)-data(1,3);   %back to the origin.
    dz(i)=data(i+1,4)-data(1,4);
end
Run Code Online (Sandbox Code Playgroud)

我接下来需要做的是计算这些值的均方.但令我担心的一件事是,如果粒子的初始位置保持不变,那么数据矩阵中的大部分信息会被忽略.我认为沿着这些线的算法可以更好地使用(更准确,更好的统计数据)数据,但我不是一个经验丰富的程序员来实现它...

注意:dt = delta t =时间步长,Pos =位置

  • 计算Pos 2和Pos 1之间的位移(dt = 1)
  • 计算Pos 3和Pos 1之间的位移(dt = 2)
  • 计算Pos 4和Pos 1之间的位移(dt = 3),依此类推......

现在将每个位置与Pos 2进行比较.

  • 计算Pos 3和Pos 2之间的位移(dt = 1)
  • 计算Pos 4和Pos 2之间的位移(dt = 2)
  • 计算Pos 5和Pos 2之间的位移(dt = 3),依此类推......

现在将每个位置与Pos 3进行比较

  • 计算Pos 4和Pos 3之间的位移(dt = 1)
  • 计算Pos 5和Pos 3之间的位移(dt = 2)
  • 计算Pos …

matlab

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

matlab ×1