How do I find the indices of the maximum (or minimum) value of my matrix?
5,428 次查看(过去 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
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)
0 个评论
更多回答(5 个)
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
0 个评论
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]
0 个评论
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
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')
This will tell us the maximum value in A is 9 and it is located in element 6 of A.
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
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 Center 和 File Exchange 中查找有关 Debugging and Analysis 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!