How do I preallocate this loop?
    5 views (last 30 days)
  
       Show older comments
    
 Hello
 I'm trying to make my program run faster and it suggests to preallocate this loop. Anyone know how convert this loop?
 % code
    for i = 1:1:5
       z(i) = x(zipfind - 1 + i);
    end
Thanks!
0 Comments
Accepted Answer
  Evan
      
 on 8 Aug 2013
        
      Edited: Evan
      
 on 8 Aug 2013
  
      Here is the loop with preallocation:
z = zeros(5,1) % preallocation
for i = 1:1:5
     z(i) = x(zipfind - 1 + i);
end
Also, it looks as if you could possibly remove the looping altogether:
x = randi(20,20,1);
zipfind = randi(20);
zloop = zeros(5,1);
for i = 1:5
   zloop(i) = x(zipfind - 1 + i);
end
zvec = x(zipfind - 1 + (1:5));
And compare the results of zloop and zvec:
>>zvec
zvec =
    14
     4
     3
    10
    20
>> zloop
zloop =
    14
     4
     3
    10
    20
So, basically, you could just replace that entire loop with:
z = x(zipfind - 1 + (1:5));
0 Comments
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
