这是生物学家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 3进行比较
matlab ×1