Converting matrix entries satisfying a threshold condition.

15 ビュー (過去 30 日間)
Paul Fishback
Paul Fishback 2015 年 1 月 29 日
編集済み: Zakaria Abdelli 2022 年 10 月 21 日
I have a matrix of numeric entries and wish to convert each entry above a specified threshold to one and all other entries to zero. This has to be an elegant way to do this without a "for" loop. Perhaps using the "find" command in some manner?
  1 件のコメント
Paul Fishback
Paul Fishback 2015 年 1 月 29 日
Never mind... Forgot I can apply the floor function to a matrix.

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

採用された回答

Star Strider
Star Strider 2015 年 1 月 29 日
There are likely a number of ways.
One approach:
M = magic(6);
Mm = mean(M(:));
M(M>Mm) = 1;
M(M~=1) = 0;
It sets all the entries greater than the mean to 1, and then uses that result to set the rest to 0.
  4 件のコメント
Star Strider
Star Strider 2020 年 3 月 7 日
@Tamir Eisenstein —
M = randi(99, 10); % Create Matrix
Msort = sort(M(:),'descend'); % Sorted Vector
Threshold = Msort(fix(numel(M)*0.2)); % Find Top 20% Value
Out = zeros(size(M))~=0; % Create Logical Matrix
Out(M >= Threshold) = 1; % Desired Result
Zakaria Abdelli
Zakaria Abdelli 2022 年 10 月 21 日
編集済み: Zakaria Abdelli 2022 年 10 月 21 日
how do i do it with 3 and others 0 can you give me a hint pleas im just a newbee???

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by