Converting matrix entries satisfying a threshold condition.
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Paul Fishback
le 29 Jan 2015
Modifié(e) : Zakaria Abdelli
le 21 Oct 2022
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?
Réponse acceptée
Star Strider
le 29 Jan 2015
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 commentaires
Star Strider
le 7 Mar 2020
@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
le 21 Oct 2022
Modifié(e) : Zakaria Abdelli
le 21 Oct 2022
how do i do it with 3 and others 0 can you give me a hint pleas im just a newbee???
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!