MATLAB Answers


Finding the row and column number in a matrix

Asked by Raghuram
on 15 Mar 2011
Latest activity Commented on by Meryem
on 4 Sep 2014

for a matrix [1 2 3 4 6 10 7 5 9] mXn matrix-- how is it that i can find the min or max element and then find the row number and the column number for further use in calculations

  1 Comment

on 4 Sep 2014

You can have an answer with a few lines of code which is:

    %you have ndata matrix
    [r,c] = size(ndata);    %get row and column values of data matrix
    fprintf('\nRow of data matrix is: %d' ,r);      %print number of row
    fprintf('\nColumn of data matrix is: %d ' ,c);  %print number of column


No products are associated with this question.

3 Answers

Jan Simon
Answer by Jan Simon
on 15 Mar 2011
 Accepted answer
data = rand(5, 3);
[maxNum, maxIndex] = max(data(:));
[row, col] = ind2sub(size(data), maxIndex);

Another less compact approach finds the max values for each column at first:

data = rand(5, 3);
[maxNumCol, maxIndexCol] = max(data);
[maxNum, col] = max(maxNumCol);
row = maxIndexCol(col);

Please read "help max" also.


on 26 Mar 2011

I used the first method only this time
the code was
[minNum1, minIndex1] = min(f(:));
[row1, col1] = ind2sub(size(f(:)), minIndex1);

??? Attempted to access pg(32,1); index out of bounds because size(pg)=[30,2].

Error in ==> PSO1stage5double at 155

is there any mistake in the code, the notations i mean

Walter Roberson
on 26 Mar 2011

Don't use size(f(:)), use size(f)

on 26 Mar 2011

yea it works now, thank you :)

Answer by Rajashree Jain
on 15 Mar 2011

[val row]=max(A(:));

[val col]=max(A(row,:));

[val row col];

  1 Comment

Jan Simon
on 15 Mar 2011

This will not work. In the first line you can get e.g. the last element of A as maximum, then "row==numel(A)". Then "A(row, :)" will fail.

Answer by Amey
on 15 Mar 2011

The first answer given by Jan Simon is absolutely right and the most efficient way to do it.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today