How to replace a for loop that contains an if statement?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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!
0 Commenti
Risposta accettata
Star Strider
il 1 Feb 2021
Modificato: Star Strider
il 1 Feb 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
.
0 Commenti
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!