MATLAB Answers

0

Vectorization of 3 nested for loops.

Asked by Emiliano Rosso on 6 Sep 2015
Latest activity Commented on by Emiliano Rosso on 7 Sep 2015
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....

  0 Comments

Sign in to comment.

1 Answer

Answer by per isakson
on 6 Sep 2015
Edited by per isakson
on 6 Sep 2015
 Accepted Answer

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

Thanks,I tried your suggestion and time was reduced by 30% !

Sign in to comment.