How to vectorize a find
Afficher commentaires plus anciens
x = zeros(1000,1);
x(76) = 1;
x(100) = 1;
x(200) = 1;
I can do:
first = find(x ==1, 1, 'first'); %the answer =76
but this is slow. I would like to speed this up. How? thanks
1 commentaire
Matlab2010
le 15 Jan 2013
Modifié(e) : Matlab2010
le 15 Jan 2013
Réponse acceptée
Plus de réponses (2)
Sean de Wolski
le 11 Déc 2012
If you only have zeros and ones and you are positive there is atleast one one, then you can use the second output from max().
[~,first] = max(x);
I don't know if this will be faster or not.
Mark Whirdy
le 11 Déc 2012
Modifié(e) : Mark Whirdy
le 11 Déc 2012
a temporary vector of row numbers, then use your vector-of-interest & a logicsl statement to index this row-number vector
a =[1:size(x,1)]'; % row numbers
b=a(x==1); % logical indexing the populated rows
b(1) % first instance
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!