Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Finding the row and column number in a matrix

Asked by Raghuram

Raghuram

on 15 Mar 2011
Latest activity Commented on by Meryem

Meryem

on 4 Sep 2014
Accepted Answer by Jan Simon

Jan Simon

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

Meryem

Meryem

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
Raghuram

Raghuram

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon

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.

13 Comments

Raghuram

Raghuram

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);

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

Error in ==> PSO1stage5double at 155
pggbest(i)=pg(row1,col1);

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

Walter Roberson

Walter Roberson

on 26 Mar 2011

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

Raghuram

Raghuram

on 26 Mar 2011

yea it works now, thank you :)

Jan Simon

Jan Simon

Answer by Rajashree Jain

Rajashree Jain

on 15 Mar 2011

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

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

[val row col];

1 Comment

Jan Simon

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.

Rajashree Jain

Rajashree Jain

Answer by Amey

Amey

on 15 Mar 2011

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

0 Comments

Amey

Amey

Contact us