Is it possible to vectorize this loop?

1 view (last 30 days)
Hi,
I've been trying to figure out a way to optimize this bit of code by vectorizing the loop. I can't find a good way to do it--maybe it's not possible given the conditional used. In the actual program the array will contain 80,000+ elements so I'm trying to speed things up.
Thanks, Charles
%Test Array
A =[1 2 3 4 5 6;4 5 6 5 6 7;7 8 9 10 11 12;];
B=sum(A,1);
C=mean(B);
E=30*C/100;
F=and(B>=C-E,B<=C+E);
for i=1:2:length(F)-1
if or(F(i)==0,F(i+1)==0)
F(i)=0;
F(i+1)=0;
end
end
G=B(F);

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 26 Aug 2014
A =[1 2 3 4 5 6;4 5 6 5 6 7;7 8 9 10 11 12;];
B=sum(A,1);
C=mean(B);
E=30*C/100;
F=and(B>=C-E,B<=C+E);
F=repmat(all(reshape(F,2,[])),2,1)
F=F(:)'

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 26 Aug 2014
F = kron(all(reshape(F,2,[])),[1 1]);

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!