How do I create a faster ordered vector without for loop
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
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
0 个评论
采纳的回答
  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 个评论
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

