How do I preallocate this loop?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Evan
am 8 Aug. 2013
Bearbeitet: Evan
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!