How do I preallocate this loop?
11 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Evan
2013 年 8 月 8 日
編集済み: Evan
2013 年 8 月 8 日
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!