Switch Case or if-else?

조회 수: 53 (최근 30일)
Sean Rubino
Sean Rubino 2021년 5월 21일
답변: Stephen23 2023년 7월 18일
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?

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 5월 21일
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
Atsushi Ueno
Atsushi Ueno 2021년 5월 21일
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 2021년 5월 21일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Dyuman Joshi
Dyuman Joshi 2021년 5월 21일
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 2023년 7월 18일
"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

카테고리

Help CenterFile Exchange에서 Variables에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by