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

 Réponse acceptée

"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

Plus de réponses (3)

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

3 commentaires

Jane Ak
Jane Ak le 6 Sep 2017
thank you Star. I'm new to matlab, how can i apply this result to the "if statement"?
if nnz(A == max(A(:))) > 1
...
end
@Walter — Thank you.

Connectez-vous pour commenter.

José-Luis
José-Luis le 6 Sep 2017
Modifié(e) : José-Luis le 6 Sep 2017
Number of maximum values:
numMax=sum(A(:) == max(A(:)));
if numMax > 1
%Do your thing
end

2 commentaires

Jane Ak
Jane Ak le 6 Sep 2017
Modifié(e) : Jane Ak le 6 Sep 2017
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 le 6 Sep 2017
@Jane Ak: Star Strider already explained that in their answer from three hours ago.

Connectez-vous pour commenter.

Jane Ak
Jane Ak le 6 Sep 2017

0 votes

Thanks alot guys. I thought I could accept more than 1 answer. you guys are the real MVPs.

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by