Это часть вступительного курса Matlab для биологов.У меня есть точки данных (для одной частицы!) В матрице с 4 столбцами (время, x, y, z) и несколькими тысячами строк.Я хочу вычислить среднеквадратичное смещение для частицы, используя координаты XYZ для всех временных шагов.MSD определяется как MSD = среднее (r (t) -r (0)) ^ 2, где r (t) - положение частицы в момент времени t, а r (0) - начальное положение, поэтому в некотором смысле эторасстояние, пройденное частицей за промежуток времени t.Это то, что я до сих пор.Я, очевидно, новичок в MATLAB, и я очень признателен за помощь / ввод сома.
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
Что мне нужно сделать дальше, это вычислить среднее значение этих значений.Но меня беспокоит то, что большая часть информации в матрице данных просто игнорируется, если исходное положение частицы остается неизменным.Я полагал, что алгоритм по этим направлениям будет лучше использовать (более точную, лучшую статистику) данные, но я не достаточно опытный программист, чтобы реализовать это ...
примечание: 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 6 и Pos 4 (dt = 3) и т. д ...
Положение 4 ...
- Рассчитать смещение между Pos 5 и Pos 4 (dt = 1)
- Рассчитать смещение между Pos 6 и Pos 4 (dt= 2) ... и т. Д. Для тысяч строк.
Таким образом, для каждой точки будет намного больше точек данных.Имеет ли смысл так поступать с кем-либо еще?Не сделает ли это вычисление менее «шумным» (т. Е. Сделает график msd vs более плавным?) Возможно, есть некоторые удобные функции matlab, чтобы облегчить эту проблему?Я бы очень признателен за какой-то вклад.