Borrar filtros
Borrar filtros

How to replace a for loop that contains an if statement?

2 visualizaciones (últimos 30 días)
gsourop
gsourop el 1 de Feb. de 2021
Editada: Star Strider el 1 de Feb. de 2021
Dear everyone,
I have 2 vectors with random numbers
A = -5 + (5+5)*rand(10,1);
B = -5 + (5+5)*rand(10,1);
and based on the sign of each pair, I want to create a third vector ('C') that will get the respective value of B, if A(i)*B(i)>0 and zero, otherwise. Is there any better way to employ this rather than using a for loop, such as:
for i = 1:10
if A(i)*B(i)>0
C(i) = B(i);
else
C(i) = 0;
end
end
A solution on the basis of not creating a third vector ('C') and overwritting B is also welcome, such as
for i = 1:10
if A(i)*B(i)<0
B(i) = 0;
end
end
Thank you in advance!

Respuesta aceptada

Star Strider
Star Strider el 1 de Feb. de 2021
Editada: Star Strider el 1 de Feb. de 2021
One of these should do what you want:
A = -5 + (5+5)*rand(10,1);
B = -5 + (5+5)*rand(10,1);
LogicalReference = (A.*B)>0; % Logical Vector
DesiredResult = LogicalReference.*B; % Either Will Work Here
.

Más respuestas (1)

KALYAN ACHARJYA
KALYAN ACHARJYA el 1 de Feb. de 2021
C=B.*(A.*B>0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by