How do i refer to an entire row in a matrix, while only specifying one variable in that row?
    41 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 Logical 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!

