Vectorization of For-If combination

1 visualización (últimos 30 días)
MAB2020
MAB2020 el 25 de Jul. de 2020
Comentada: MAB2020 el 27 de Jul. de 2020
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 comentarios
David Hill
David Hill el 25 de Jul. de 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
MAB2020
MAB2020 el 25 de Jul. de 2020
% Correction, use the following code. Trying to generalize a much more complex segment.
% The overall objective is to gain a proper understanding of vectorization algorithms for
% matrix operations consisting of if statements nested within for loops
for A = 1:10
for B = 1:10
for C = 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
end

Iniciar sesión para comentar.

Respuesta aceptada

David Hill
David Hill el 25 de Jul. de 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
  1 comentario
MAB2020
MAB2020 el 27 de Jul. de 2020
Excellent, thank you very much for your input! I will implement this into my code and evaluate for relative performance improvement

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by