MATLAB: Subtracting within a Matrix

accumarraymatrix array

I have this matrix:
1 0
1 2
1 3
2 3
2 4
3 1
3 6
In the second column, I need to find the highest and lowest number that are associated with the same number in the first column, and then subtract the two. In row 1, the numbers 1 and 0 exist. In row 3, the numbers 1 and 3 exists. I need to subtract the 3 and the 0 and get 3 as my output.
The output should be a matrix that looks like this:
1 3
2 1
3 5
Also if a number in the first column only occurs once
1 0
1 2
1 3
2 3
2 4
3 1
3 6
4 5
Then the number in the second column associated with it in the output matrix should be a 0.
1 3
2 1
3 5
4 0

Best Answer

you can use the built in function unique to determine this:
A =[ 1 0; 1 2; 1 3; 2 3; 2 4; 3 1; 3 6; 4 5]
[c1,ia1,ic1] = unique(A(:,1));
for ind = 1:length(c1)
tempMIN = min(A(ind==A(:,1),2));
tempMAX = max(A(ind==A(:,1),2));
tostore = tempMAX-tempMIN
end
also you maybe able to do this simpler with accumarray().