MATLAB Answers

Switch Case or if-else?

8 views (last 30 days)
Sean Rubino
Sean Rubino on 21 May 2021
Commented: Sean Rubino on 21 May 2021
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?

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 21 May 2021
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 Comments
Sean Rubino
Sean Rubino on 21 May 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.

Sign in to comment.

More Answers (1)

Dyuman Joshi
Dyuman Joshi on 21 May 2021
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.

Community Treasure Hunt

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

Start Hunting!

Translated by