Check for identical maximum values in an array

16 次查看(过去 30 天)
Hi guys, I have a matrix, A = [2 4 1;8 3 2;8 8 6;4 5 3] As seen, the above matrix has more than one maximum values. How do i write an if statement testing for multiple maximum values? That is: if (code) % if more than one maximum value exists; ...; % do ... end

采纳的回答

Walter Roberson
Walter Roberson 2017-9-6
"if more than one maximum value exists in the array pick the first max value and display it's index"
idx = find( A(:) == max(A(:)) );
if length(idx) > 1
disp(idx(1))
end

更多回答(3 个)

Star Strider
Star Strider 2017-9-6
Probably the easiest way is to do logical indexing and count the number of non-zero elements to get the number of maximum values:
A = [2 4 1;8 3 2;8 8 6;4 5 3];
nr_maxvals = nnz(A == max(A(:)));
nr_maxvals =
3

José-Luis
José-Luis 2017-9-6
编辑:José-Luis 2017-9-6
Number of maximum values:
numMax=sum(A(:) == max(A(:)));
if numMax > 1
%Do your thing
end
  2 个评论
Jane Ak
Jane Ak 2017-9-6
编辑:Jane Ak 2017-9-6
Thank you Jose. Pardon my asking, why is the sum there? Also my if statement is stated thus:
if %more than one maximum value exists in the array
%pick the first max value and display it's index
end
I'm thinking of how to apply this to your answer above. Thank you again for your time
Stephen23
Stephen23 2017-9-6
@Jane Ak: Star Strider already explained that in their answer from three hours ago.

请先登录,再进行评论。


Jane Ak
Jane Ak 2017-9-6
Thanks alot guys. I thought I could accept more than 1 answer. you guys are the real MVPs.

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by