我有一个包含多个粒子轨迹的矩阵,我想单独分析轨迹数是矩阵的列之一,因此我尝试根据该数进行排序。我正在使用这个答案中的一些代码:MSD with matlab(非常有帮助,谢谢!)来计算 MSD,但我很难解析出各个轨迹。更详细地解释我要做什么:我有矩阵格式的轨迹输出,一列用于轨迹编号,一列用于 x 位置,一列用于 y 位置等。我希望能够获取此信息并计算每个轨迹的均方位移。为了做到这一点,我必须创建一种基于轨迹编号(列于第 7 行)来区分数据点的方法mymatrix
)。这似乎是我遇到麻烦的地方。该矩阵中的重要列是 1:x 位置、2:y 位置和 7:轨迹编号。到目前为止我有
total_rows=size(mymatrix,1);
max_trajectory_number=mymatrix(total_rows,7);
nData=0;
msd=zeros(total_rows, 4)
for i=0:max_trajectory_number
trajectornumber= mymatrix(i,7);
if trajectorynumber.equals(i)
nData=nData+1; %counts the number of instances of this trajectory number, which is the number of data points in the trajectory
for dt = 1:nData
deltaCoords = mymatrix(1+dt:end,1:2) - traj0mat(1:end-dt,1:2); %calculates time-averaged MSD based on y and y positions in colums 1 and 2 respectively
squaredDisplacement = sum(deltaCoords.^2,2); %# dx^2+dy^2+dz^2
msd(dt,1) = trajectorynumber; %trajectory number
msd(dt,2) = mean(squaredDisplacement); %# average
msd(dt,3) = std(squaredDisplacement); %# std
msd(dt,4) = length(squaredDisplacement); %# n
end
end
不幸的是,当我在 上运行它时mymatrix
,生成的 msd 矩阵仍然全为零。我认为这可能是由于基于轨迹编号的排序错误。我没有收到错误只是不是我正在寻找的结果
如果有人对如何解决此问题有任何建议,将不胜感激。