Align different starting point to zero

1 view (last 30 days)
I have a matrix , 7096*3 double.
At a first column, numbers represent same particles with different number. I have 168 particles and each of them has different starting time points(second column) with intensity value(third column). In the case of 40th particles, it starts from 2.1960 (see, the matrix, 40 from first column and 2.196 from second column).
I'd like to align those data to zero as the starting point. I need to find inital value or minimum value of time column of each particle and substract them. And make new matrix, probably. How can I do for that?
40 2.196 51950
40 3.294 51728
40 4.392 50899
40 5.490 50869
40 6.588 51741
-> What I want to do is
40 0 51950
40 1.098 51728
40 2.196 50899
40 3.294 50869
40 4.392 51741
number=unique(B(:,1));
tn=length(unique(B(:,1)));
for k=1:tn
B(B(:,1)==number(k),2)-min(B(B(:,1)==number(k),2));
end

Accepted Answer

Sayyed Ahmad
Sayyed Ahmad on 4 Jun 2019
try with find and index
for i=1:tn
ind=find(B(:,1)==number(i))
y=min(B(ind,2));
B(ind,2)=b(ind,2)-y;
end

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!