How do i refer to an entire row in a matrix, while only specifying one variable in that row?

50 次查看(过去 30 天)
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!

采纳的回答

dpb
dpb 2015-8-16
编辑:dpb 2015-8-16
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 个评论
Jesse Saris
Jesse Saris 2015-8-19
I accepted it, thank you for the advice.. I've just started working with Matlab this month. I also have a follow-up question: Is it possible to automatically delete this minimum from the matrix and continue working with the altered matrix? I now how to clear variables, but not how to delete one row out of a matrix.
Thank you again for the help!
dpb
dpb 2015-8-19
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.

请先登录,再进行评论。

更多回答(1 个)

matico
matico 2015-8-16
Something like this:
Matrix = [1 5; 4 1; 2 7; 3 8];
SecCol = Matrix(:,2);
[val,ind] = min(SecCol);
Result = Matrix(ind,:)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by