How do I use one IF-END instead of nested IF-ENDs?

How can I rewrite the following statement so that the nested IF-END structure is not needed. And also replace the code with an IF - ELSEIF - END control structure that accomplishes the same outcome.
if x < y
if z < 10
w = x*y*z
end
else
w = (x*y*z).^2
end

 Respuesta aceptada

Matt Fig
Matt Fig el 2 de Mzo. de 2011
I think replacing what you have with an IF-ELSEIF structure would make it less efficient because it would result in more comparisons. Is there a particular reason why you want to do this?
if x < y && z < 10
w = x*y*z;
elseif x>=y
w = (x*y*z).^2;
end
If that is correct, it always makes 3 comparisons, whereas your original sometimes only makes 1 and at most makes 2.

1 comentario

George
George el 2 de Mzo. de 2011
no particular reason, just working with code and school work
thank you!

Iniciar sesión para comentar.

Más respuestas (1)

Paulo Silva
Paulo Silva el 2 de Mzo. de 2011
w=(x*y*z)^(~((x<y) & (z<10))+1)

2 comentarios

Matt Fig
Matt Fig el 2 de Mzo. de 2011
Pualo, this is not correct. This will always define w, whereas the IF statements above will not. Specifically, look at x=2,y=4,z=15. This could make a difference where w is defined as a default prior to the IF statement, which has a chance to redefine based on specific conditions.
Paulo Silva
Paulo Silva el 2 de Mzo. de 2011
I knew it wasn't perfect, I tried to add that situation but got tired and distracted by something else, maybe you or other person can improve it.

Iniciar sesión para comentar.

Categorías

Productos

Preguntada:

el 2 de Mzo. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by