Vectorization of For-If combination
1 view (last 30 days)
Show older comments
Requesting guidance on the proper vectorization methods for combinations of if statements within for loops. An example of the format referenced is included below. Code is utilizing a painful combination of if statements nested within for loops and appropriate vectorization is the only way in which this will run efficiency
X = zeros(1000,1)
C = 1:10
for A = 1:10
for B = 1:10
if C = 1
X(A*B*C) = 1;
elseif C = 2
X(A*B*C) = 2;
else
X(A*B*C) = 3;
end
end
end
2 Comments
David Hill
on 25 Jul 2020
Your code does not make sense. C is an array that does not change, your code will only execute the else statement.
X = zeros(1000,1)
C = 1:10
for A = 1:10
for B = 1:10
if C == 1%need == for comparison, this is always false
X(A*B*C) = 1;
elseif C == 2%comparison C= [1 2 3 4 5 6 7 8 9 10], this will be false
X(A*B*C) = 2;
else
X(A*B*C) = 3;%this will execute but X(1:10)=3 for for loop
end
end
end
Accepted Answer
David Hill
on 25 Jul 2020
Can't think of any better way to do your problem. Only 1 loop now.
x=zeros(1000,1);
for i=1:10
x(i:i:10*i)=1;
x(2*i:2*i:20*i)=2;
x(3*i:3*i:30*i)=3;
x(4*i:4*i:40*i)=3;
x(5*i:5*i:50*i)=3;
x(6*i:6*i:60*i)=3;
x(7*i:7*i:70*i)=3;
x(8*i:8*i:80*i)=3;
x(9*i:9*i:90*i)=3;
x(10*i:10*i:100*i)=3;
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!