Switch Case or if-else?

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

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

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?
I figured it out! Thank you for your help.
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...
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 (2)

Dyuman Joshi
Dyuman Joshi on 21 May 2021

2 votes

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.
"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

Categories

Products

Release

R2018a

Community Treasure Hunt

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

Start Hunting!