MATLAB Answers

choose max among elements with same column 1 value, different column 2 value

1 view (last 30 days)
Matthew
Matthew on 4 Mar 2014
Edited: Matt J on 4 Mar 2014
consider a nx2 matrix like:
A = [1 0.7
2 0.5
2 0.6
2 0.3
3 0.4
3 0.1
4 0.7
5 0.3
5 0.3]
I want to create mx2 matrix B subset of A where B as the properties:
  1. B(:1) = unique(A(:,1))
  2. If a value in column 1 of A appears more than once, then B will contain the row from A which has greatest value in column 2 of A
so the answer to the given example would be
B = [1 0.7
2 0.6
3 0.4
4 0.7
5 0.3]
I can easily do this with for-loops and stuff, but I was wondering if anyone could come up with an elegant MATLAB one-liner , or perhaps two- or three-liner? :)
(It makes my MATLAB skills better to see how the pros do it in one- two- or three-liners)
Thank you!

  0 Comments

Sign in to comment.

Accepted Answer

Matt J
Matt J on 4 Mar 2014
Edited: Matt J on 4 Mar 2014
B(:,2)=accumarray(A(:,1), A(:,2),[],@max );
B(:,1)=(1:size(B,1)).'

  0 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.