How do I find the indices of the maximum (or minimum) value of my matrix?

조회 수: 7,219 (최근 30일)
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.

채택된 답변

MathWorks Support Team
MathWorks Support Team 2022년 3월 28일
편집: MathWorks Support Team 2021년 11월 17일
The "min" and "max" functions in MATLAB return the index of the minimum and maximum values, respectively, as an optional second output argument.
For example, the following code produces a row vector 'M' that contains the maximum value of each column of 'A', which is 3 for the first column and 4 for the second column. Additionally, 'I' is a row vector containing the row positions of 3 and 4, which are 2 and 2, since the maximums for both columns lie in the second row.
A = [1 2; 3 4];
[M,I] = max(A)
For more information on the 'min' and 'max' functions, see the documentation pages listed below:
To find the indices of all the locations where the maximum value (of the whole matrix) appears, you can use the "find" function.
maximum = max(max(A));
[x,y]=find(A==maximum)

추가 답변 (5개)

Shakir Kapra
Shakir Kapra 2015년 4월 20일
편집: Shakir Kapra 2015년 4월 20일
[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
indrajit das 2016년 8월 3일
find(arr == max(arr));

Andrew Teixeira
Andrew Teixeira 2019년 10월 1일
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
Juanith HL 2019년 10월 8일
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
Steven Lord
Steven Lord 2022년 8월 18일
If you can use linear indices, instead I would recommend:
A = [8 2 4; 7 3 9];
[X, ind] = max(A, [], 'all', 'linear')
X = 9
ind = 6
This will tell us the maximum value in A is 9 and it is located in element 6 of A.

댓글을 달려면 로그인하십시오.


ANKUR KUMAR
ANKUR KUMAR 2017년 9월 19일
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
Steven Lord
Steven Lord 2020년 9월 6일
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.)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Manage Products에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by