How to vectorize a find
Mostrar comentarios más antiguos
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 comentario
Matlab2010
el 15 de En. de 2013
Editada: Matlab2010
el 15 de En. de 2013
Respuesta aceptada
Más respuestas (2)
Sean de Wolski
el 11 de Dic. de 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
el 11 de Dic. de 2012
Editada: Mark Whirdy
el 11 de Dic. de 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
Categorías
Más información sobre Matrix Indexing en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!