Check for identical maximum values in an array

4 ビュー (過去 30 日間)
Jane Ak
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

採用された回答

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
  3 件のコメント
Walter Roberson
Walter Roberson 2017 年 9 月 6 日
if nnz(A == max(A(:))) > 1
...
end
Star Strider
Star Strider 2017 年 9 月 6 日
@Walter — Thank you.

サインインしてコメントする。


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 Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by