# To find the maximum value in a matrix?

3,676 views (last 30 days)

Show older comments

Sabarinathan Vadivelu
on 5 Sep 2012

Answered: Sneha Baranwal
on 16 Aug 2021

Let me have a 3X3 matrix

6 8 9

7 10 11

21 22 8

How to find the maximum value from this matrix?

##### 2 Comments

KHOIROM Motilal
on 17 Mar 2016

Edited: KHOIROM Motilal
on 17 Mar 2016

- clc
- close all
- clear all
- X=[99 67 65;
- 63 62 61;
- 41 40 9];
- MAX=X(1,1);
- for i=1:3
- for j=1:3
- if MAX<= X(i,j);
- MAX=X(i,j);
- end
- end
- end
- disp(MAX)

### Accepted Answer

Michael Völker
on 5 Sep 2012

Edited: Steven Lord
on 25 Mar 2020

Starting in R2018b, you can use the following command to find the maximum over all elements in an array A:

M = max(A, [], 'all');

For previous releases, use:

M = max(A(:));

##### 1 Comment

Image Analyst
on 5 Sep 2012

To get it's location as well, accept both outputs of max:

[maxValue, linearIndexesOfMaxes] = max(A(:));

Note that there can be the max value at more than one location. To get the rows and columns (instead of linear indexes), you can use ind2subs() or find():

[rowsOfMaxes colsOfMaxes] = find(A == maxValue);

### More Answers (6)

Azzi Abdelmalek
on 5 Sep 2012

max(max(A))

##### 3 Comments

Jonathan Posada
on 20 Feb 2016

Tom
on 28 Jan 2020

##### 2 Comments

Steven Lord
on 25 Mar 2020

The [] as the second input is required when you want to specify a dimension, including 'all'. The function call max(A, 'all') only works if A and 'all' are compatibly sized.

>> max(1:3, 'all')

ans =

97 108 108

>> max(1:3, [], 'all')

ans =

3

Dmaldo01
on 22 Apr 2016

Edited: Dmaldo01
on 22 Apr 2016

This will work for all dimensions. If more efficient than ind2sub for less than 16000 elements.

[M,Index] = maxEl(MatVar)

index = size(MatVar);

Index = index*0;

M = max(MatVar(:));

A = find(MatVar==max(MatVar(:)),1);

for i = 1:length(index)

Index(i) = mod(ceil(A),index(i));

A = A/index(i);

end

Index(Index==0)=index(Index==0);

##### 0 Comments

Yokesh
on 16 May 2019

If matrix dimension is 'n', then max element can be found by:

max(max(.....maxn^2((A))...)

We have to include n^2 times max

##### 2 Comments

JPS
on 6 Feb 2021

or you can use,

M = max(max(A));

##### 2 Comments

Walter Roberson
on 15 Mar 2021

A = [1 3 2 5; 7 9 12 8; 12 8 9 0]

[best3, best3idx] = maxk(A(:),3)

The three maximum values are 12, 12, and 9, not 12, 9, and 8. If you are interested in the three maximum unique values, then you need to explicitly take into account that some values occur more than once.

k = 3;

uA = unique(A, 'sorted');

nresults = min(length(uA), k);

results = cell(nresults, 1);

for K = 1 : k

this_max = uA(end-K+1);

results{K,1} = this_max;

results{K,2} = find(A==this_max).';

end

disp(results)

The output is a cell array, in which the first column gives you the value that is the maximum, and the second column gives you all the linear indices into the array. The code could be modified to give row and column outputs instead without much change.

The code does not assume that the number of occurrences is the same for each of the values (if that were known to be true then a numeric array could be created instead of a cell array.)

Sneha Baranwal
on 16 Aug 2021

k = 3;

uA = unique(A, 'sorted');

nresults = min(length(uA), k);

results = cell(nresults, 1);

for K = 1 : k

this_max = uA(end-K+1);

results{K,1} = this_max;

results{K,2} = find(A==this_max).';

end

disp(results)

##### 0 Comments

### See Also

### Categories

### Products

### Community Treasure Hunt

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

Start Hunting!