For loops are too slow
古いコメントを表示
I have some MATLAB code that was given to me by a coworker. This code contains a three layered for loop. So the code has the basic structure:
for
for
for
The code works but it takes an incredibly long time to execute as the three layered for loop is performing operations on a 40000x4 matrix. I need a way to either bypass the for loops or make them run faster. Someone mentioned to me that I could call Perl in MATLAB to do this but I am unsure how this works. Dose anyone have any ideas. Thank you.
3 件のコメント
Roger Stafford
2013 年 8 月 5 日
Whether or not you can avoid using for-loops depends very much on what operations are performed within them. Some can be "vectorized" and some cannot. For you to receive effective help it would be advisable to show us the nature of your for-loop operations. Also sometimes such operations themselves can be reorganized for much greater efficiency even though for-loops are still used.
Joseph
2013 年 8 月 7 日
Matt Kindig
2013 年 8 月 7 日
I think the pre-allocating xmsd would help streamline the code, while still retaining the for loops. Something like this:
xmsd = NaN(nmax, 3);
for i = 1:1:N
for j = 1:1:norigin
jstart = (j-1)*N + i;
for k = nmin:1:nmax
kend = jstart + k*N;
xmsd(k,1:3) = xmsd(k,1:3) + (md_msd(kend,1:3) - md_msd(jstart,1:3) ).^2;
end
end
end
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および 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!