Avoid for loops with if inside

Hello everyone,
This is my code:
counter=1;
for i=1:size(A,1)
for j=counter:size(B,1)
if D(1,B(j,1))>0
if B(j,2)-A(i,2)<5
C(A(i,1),B(j,1))=C(A(i,1),B(j,1))+1;
D(1,B(j,1))=D(1,B(j,1))-1;
B(j,3)=1;
counter=j+1;
end
break;
end
end
end
A is an 100*3 matrix B is an 1000*3 matrix C is an 100*1000 matrix D is an 1*1000 matrix
So, can it be written by much less computational effort? Any comment is very appreciated! Thanks!

回答 (1 件)

Doug Hull
Doug Hull 2012 年 9 月 6 日

0 投票

If it is working, what are you trying to accomplish by changing it. Have you run it through the profiler to find out that this is the bottleneck in your code slowing it down?

1 件のコメント

Alireza
Alireza 2012 年 9 月 6 日
Thank you! Yes, you are right! That was not the bottleneck of my code. I checked the run time and that was fine.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

タグが未入力です。

質問済み:

2012 年 9 月 4 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by