MATLAB Answers

Check for identical maximum values in an array

조회 수: 41(최근 30일)
Jane Ak
Jane Ak 6 Sep 2017
답변: Jane Ak 6 Sep 2017
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

  댓글 수: 0

로그인 to comment.

채택된 답변

Walter Roberson
Walter Roberson 6 Sep 2017
"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

  댓글 수: 0

로그인 to comment.

추가 답변(3개)

Star Strider
Star Strider 6 Sep 2017
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

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

로그인 to comment.


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

  댓글 수: 2

Jane Ak
Jane Ak 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
Stephen Cobeldick
Stephen Cobeldick 6 Sep 2017
@Jane Ak: Star Strider already explained that in their answer from three hours ago.

로그인 to comment.


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

  댓글 수: 0

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by