Evaluate Multiple Conditions in Expression

3 visualizzazioni (ultimi 30 giorni)
I've been meaning to simplify my code by combining multiple conditions into one IF statement.
This is what I'm currently using :
if IntX < 1
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
if IntX > Inner(3)
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
if IntY < 1
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
if IntY > Inner(4)
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
This is not elegant but it works. I experimented with this statement but I get an error :
if (IntX < 1) && (IntX > Inner(3)) && (IntY < 1) && (IntY > Inner(4))
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
  2 Commenti
Voss
Voss il 9 Gen 2022
If either of IntX and IntY is a vector, you'll get an error using && or ||.

Accedi per commentare.

Risposta accettata

the cyclist
the cyclist il 9 Gen 2022
if (IntX < 1) | (IntX > Inner(3)) | (IntY < 1) | (IntY > Inner(4))
ah.Color=[1, 1, 1];
xlabel(ax, ' ');
return;
end
You should also be able to use the short-circuit operator || instead of |.
  2 Commenti
Roger Breton
Roger Breton il 11 Gen 2022
Modificato: Roger Breton il 11 Gen 2022
Works like a charm -- thank you!
I'm not sure I'm clear on the short-circuit operator : is that, as soon as one condition is false, the whole expression stops being evaluated?
the cyclist
the cyclist il 11 Gen 2022
You have the gist right, but in the short-circuited OR operation, it will evaluate from left-to-right until it finds a TRUE condition, because then it knows the entire expression is true.
See a fuller explanation in this section of the documentation.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Contour Plots in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by