How do I find the indices of the maximum (or minimum) value of my matrix?
Show older comments
The 'find' command only returns the indices of all the non-zero elements of a matrix. I would like to know how to find the indices of just the maximum (or minimum) value.
Accepted Answer
More Answers (5)
Shakir Kapra
on 20 Apr 2015
Edited: Shakir Kapra
on 20 Apr 2015
[M,I] = min(A)
where M - is the min value
and I - is index of the minimum value
Similarly it works for the max
indrajit das
on 3 Aug 2016
13 votes
find(arr == max(arr));
Andrew Teixeira
on 1 Oct 2019
How about just:
A = magic(5);
[Amins, idx] = min(A);
[Amin, Aj] = min(Amins);
Ai = idx(Aj);
where your final matrix minima is located at [Ai, Aj]
Juanith HL
on 8 Oct 2019
10 votes
A = [8 2 4; 7 3 9]
[M,I] = max(A(:)) %I is the index maximun Here tu can change the function to max or min
[I_row, I_col] = ind2sub(size(A),I) %I_row is the row index and I_col is the column index
1 Comment
If you can use linear indices, instead I would recommend:
A = [8 2 4; 7 3 9];
[X, ind] = max(A, [], 'all', 'linear')
This will tell us the maximum value in A is 9 and it is located in element 6 of A.
ANKUR KUMAR
on 19 Sep 2017
Use this as a function and type [x,y]=minmat(A) to get the location of the minimum of matrix. for example:
>> A=magic(5)
>> [a,b]=minmat(A)
a =
1
b =
3
Save this as a function in your base folder and use it.
function [ a,b ] = minmat( c )
as=size(c);
total_ele=numel(c);
[~,I]=min(c(:));
r=rem(I,as(1));
a=r;
b=((I-a)/as(1))+1;
if a==0
a=as(1);
b=b-1;
else
a=r;
b=b;
end
end
1 Comment
Steven Lord
on 6 Sep 2020
Once you've stored this code in a file named minmat.m (see this documentation page for the basics of defining a function) you can call this like any other MATLAB function (as shown on this other documentation page.)
Categories
Find more on Logical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!