How do i refer to an entire row in a matrix, while only specifying one variable in that row?
74 views (last 30 days)
Show older comments
I have a matrix consisting of 2 columns and 160 rows. My aim is to automatically generate the entire row in which the second variable is the lowest of it's column. For example:
Matrix = [1 5; 4 1; 2 7; 3 8]
I need a code which generates the second row (4 1) since 1 is the lowest number in the second column. Thank you in advance for the help!
0 Comments
Accepted Answer
dpb
on 16 Aug 2015
Edited: dpb
on 16 Aug 2015
Unfortunately, here's where Matlab syntax of only being able to return and use the first argument inline hurts (albeit I don't have a suggestion for an alternate syntax) so you must use an intermediate variable...
[~,ix]=min(M(:,2)); % loc of min in 2nd column
N=M(ix,:); % that row from M
This works reliably only if there is a unique minimum; if repeated minimums are possible the above will return only the location of the first of same...
4 Comments
dpb
on 19 Aug 2015
Set the desired row(s)/column(s) to empty ([]) ...
x(ix,:)=[]; % delete the rows in index vector ix
I suggest opening the online documentation and working thru the "Getting Started" exercises -- it'll walk you thru these kinds of introductory syntax exercises more quickly.
More Answers (1)
matico
on 16 Aug 2015
Something like this:
Matrix = [1 5; 4 1; 2 7; 3 8];
SecCol = Matrix(:,2);
[val,ind] = min(SecCol);
Result = Matrix(ind,:)
0 Comments
See Also
Categories
Find more on Matrix Indexing 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!