Is there a compact way to check multiple variables against the same conditions?

I'm thinking about how to make some code I'm working on easier to read. For example, if I have something like the following:
if x != 0 && y != 0 && z != 0
% stuff
end
Is there a way for me to turn that into something more compact, like:
if (x&y&z) != 0
% stuff
end
Or do I just have to put up with this? This may not look like an ugly example, but there are some ugly lines I have which involve comparing a number of variables against the same set of parameters. I've considered setting up a function to which I can pass an array of variables and a set of conditions to check them against, but I'd prefer a syntax-related solution. Thanks in advance.

 Respuesta aceptada

If x, y, z are logical, then you can write the logical expression as above; if they're numeric and can hold anything but 0|1 then you have to do the explicit logic test to convert to a logical condition.
BTW, NB: if they're vectors or arrays, then be awfully careful of the && shortcircuit operators and remember that in Matlab an expression is TRUE iff
all(x)==true
Many a poster has wondered why their if clause doesn't seem to get executed owing to the latter.

Más respuestas (1)

Sean de Wolski
Sean de Wolski el 20 de Mayo de 2015
Editada: Sean de Wolski el 20 de Mayo de 2015
Frankly, I like the way you have it. It's clear to read:
if all([x(:); y(:); z(:)])
%etc
end
would also work but is less readable.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

E D
el 20 de Mayo de 2015

Editada:

el 20 de Mayo de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by