How do I create a faster ordered vector without for loop

1 visualización (últimos 30 días)
Oluwaseun Lijoka
Oluwaseun Lijoka el 25 de Nov. de 2015
Editada: Stephen23 el 25 de Nov. de 2015
I discover that this pseudo code within my code makes my program slow probably because of the for loop and the fact that JJ is not pre-allocated. I will appreciate a faster idea.
JJ=[];
for j=0:p
JJ=[JJ; repmat(j,[1+((j+1)-1)*2,1])];
end

Respuesta aceptada

Stephen23
Stephen23 el 25 de Nov. de 2015
Editada: Stephen23 el 25 de Nov. de 2015
X = floor(sqrt(0:(p+1)^2-1))';
This is nearly fifty times faster (p=1000):
Elapsed time is 5.2233 seconds.
Elapsed time is 0.111006 seconds.
As p gets larger it will reach your memory limit very quickly: each magnitude increase in p causes a two-magnitude increase in the number of elements of the output vector.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by