Vectorization of 3 nested for loops.

2 views (last 30 days)
I have 3 for loop and I want to vectorized it .
I try a lot to do it but I cannot do it.
This is the simple version.
I can't explain the whole situation but:
A is 100*82.
B is 203*2000.
C is 1*10.
D is 100*5*2000.
for nset=1:100
for nindy=1:5
for nimp=1:2000
if A(nset,2+(nindy-1).*3)==1
if B(33.*6+nindy,nimp)<= C(1+(nindy-1).*2)+...
((C(2+(nindy-1).*2)-C(1+(nindy-1).*2))./11).*A(nset,1+(nindy-1).*3)
D(nset,nindy,nimp)=1;
end
end
end
end
end
I want to replace the 3 for loops with vectorization...
Thanks....

Accepted Answer

per isakson
per isakson on 6 Sep 2015
Edited: per isakson on 6 Sep 2015
I don't think that your code can be vectorized. However, this should be a bit faster
for nset=1:100
for nindy=1:5
if A(nset,2+(nindy-1).*3)==1
C17 = C(1+(nindy-1).*2) ...
+ ((C(2+(nindy-1).*2)-C(1+(nindy-1).*2))./11).*A(nset,1+(nindy-1).*3);
for nimp=1:2000
if B(33.*6+nindy,nimp) <= C17
D(nset,nindy,nimp) = 1;
end
end
end
end
end
Caveat: I have neither tested correctness nor speed.
  1 Comment
Emiliano Rosso
Emiliano Rosso on 7 Sep 2015
Thanks,I tried your suggestion and time was reduced by 30% !

Sign in to comment.

More Answers (0)

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!