Hello,
I'm writing a script which calculates a value of "R" which is then compared to several inequality limits. The limits are:
R <= 1.2
1.2 < R <= 1.45
1.45 < R <= 1.66
1.66 < R <= 1.93
R > 1.93
Once R satisfies the conditional statement a subroutine is prompted and 1 of 5 subsequent scripts is run.
Is switch case or if-else better for this?

 Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 21 de Mayo de 2021

1 voto

Switch statement cannot judge the range of R. It may be possible but it must be very tricky.
  • A case_expression cannot include relational operators such as < or > for comparison against the switch_expression. To test for inequality, use if, elseif, else statements.
if (R <= 1.2)
disp('if-else condition 1');
elseif (R <= 1.45)
disp('if-else condition 2');
elseif (R <= 1.66)
disp('if-else condition 3');
elseif (R <= 1.93)
disp('if-else condition 4');
else % R > 1.93
disp('if-else condition 5');
end
I would use this method.
index = find(R <= [1.2 1.45 1.66 1.93 inf], 1, 'first');
disp(['if-else condition ' num2str(index)]);

4 comentarios

Sean Rubino
Sean Rubino el 21 de Mayo de 2021
Thank you,
I used the if, elseif, else statements and it worked out. Now I need the output to run the script from the selected range.
Do you have insight on the command for that?
Sean Rubino
Sean Rubino el 21 de Mayo de 2021
I figured it out! Thank you for your help.
Atsushi Ueno
Atsushi Ueno el 21 de Mayo de 2021
Thank you.
I don't know what script you are writing is. Is it MATLAB function? or other language script?
Please show something about what you are writing, at least interface...
Sean Rubino
Sean Rubino el 21 de Mayo de 2021
if R <= 1.2;
disp('Uniform Illumination');
Uni_Ill
elseif R <= 1.45;
disp('Cosine Illumination');
Cos_Ill
elseif R <= 1.66;
.
.
.
MATLAB script. I got it to work out for what I am doing. I'm sure I'll be tweaking things but this is a start.

Iniciar sesión para comentar.

Más respuestas (2)

Dyuman Joshi
Dyuman Joshi el 21 de Mayo de 2021

2 votos

if-else would be better in this case because you have a range of values of R (a variable).
switch is useful when you have descrete values of a variable.
Stephen23
Stephen23 el 18 de Jul. de 2023

1 voto

"Switch statement cannot judge the range of R. It may be possible but it must be very tricky."
switch true
case R <= 1.2
disp('condition 1');
case R <= 1.45
disp('condition 2');
case R <= 1.66
disp('condition 3');
case R <= 1.93
disp('condition 4');
otherwise % R > 1.93
disp('condition 5');
end

Categorías

Más información sobre Variables en Centro de ayuda y File Exchange.

Productos

Versión

R2018a

Preguntada:

el 21 de Mayo de 2021

Respondida:

el 18 de Jul. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by