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 (view profile)

on 15 Mar 2011
Latest activity Commented on by Meryem

Meryem (view profile)

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

Meryem

Meryem (view profile)

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 (view profile)

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon

Jan Simon (view profile)

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 (view profile)

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 (view profile)

on 26 Mar 2011

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

Raghuram

Raghuram (view profile)

on 26 Mar 2011

yea it works now, thank you :)

Jan Simon

Jan Simon (view profile)

Answer by Rajashree Jain

Rajashree Jain (view profile)

on 15 Mar 2011

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

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

[val row col];

1 Comment

Jan Simon

Jan Simon (view profile)

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 (view profile)

Answer by Amey

Amey (view profile)

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 (view profile)

Contact us