MATLAB Answers

Jane Ak
0

Check for identical maximum values in an array

Jane Ak
さんによって質問されました 2017 年 9 月 6 日
最新アクティビティ Jane Ak
さんによって 回答されました 2017 年 9 月 6 日
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.

4 件の回答

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

  0 件のコメント

サインイン to comment.


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

  3 件のコメント

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

サインイン to comment.


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

サインイン to comment.


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.

  0 件のコメント

サインイン to comment.



Translated by