MATLAB Answers


Keep only certain rows (with minimum values) from a matrix

Asked by Ferran
on 29 Jun 2013
Accepted Answer by Matt J

I have the following matrix:

A = [1 2; 1 3; 1 1; 2 1; 2 2; 2 0]

which has an index (1, 2, etc...) in the first column, and the relevant information in the 2nd column.

I would like to reduce this matrix so that only 1 row stays with the same index: the row with the minimum relevant value (2nd column).

It should look like this:

B = [1 1; 2 0]

the rest of the rows should not appear.

Is there an easy way I could do that?

Thank you very, very much in advance. I've been trying this for hours now and can't find an easy way to obtain B.



No products are associated with this question.

2 Answers

Answer by Matt J
on 29 Jun 2013
Edited by Matt J
on 29 Jun 2013
 Accepted answer

  1 Comment

on 29 Jun 2013

Thank you very much!

Answer by the cyclist
on 29 Jun 2013
Edited by the cyclist
on 29 Jun 2013

The unique values in the first column are


and the minimum values from the second column can be found using the slick accumarray() function:


so you can just concatenate those


to get what you want.

doc accumarray for details.

  1 Comment

on 29 Jun 2013

Thank you very much! It's my first time around here, so I didn't know how that "Accept answer" thing works. I ended up using both yours and Matt J's suggestions and it works great!

Thank you very much, the cyclist!

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today