How do I create a faster ordered vector without for loop

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

 채택된 답변

Stephen23
Stephen23 2015년 11월 25일
편집: Stephen23 2015년 11월 25일
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.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2015년 11월 25일

편집:

2015년 11월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by