MATLAB: Pick arrays from matrix with condition

arrayconditionpick

Hi, I have a matrix:
2 2 2 1
2 2 1 1
1 1 9 1
2 2 0 1
I need to pick rows that have same first number and sum them, but order of picking is important. In this case i need to pick first two rows and sum, then pick third and finaly fourth row; after that all the first numbers of column of new matrix should be the same depending on matrix sumed, so in the end there should be:
2 4 3 2
1 1 9 1
2 2 0 1
Any suggestions?

Best Answer

I = cumsum([true;diff(a(:,1))~=0]);
ii = fullfact(size(a));
out = accumarray([I(ii(:,1)), ii(:,2)],a(:))