MATLAB条件判断根据条件是否成立,决定要不要执行某段代码,或者改走另一段。最简单的是只有 if 的情况:
score = 85;
if score >= 60
disp('及格')
endscore >= 60 为真时,执行 if 到 end 之间的语句,为假就整段跳过。MATLAB 的 if 必须以 end 收尾,漏写会报语法错误。C 语言靠花括号包住分支,Python 靠缩进,这里靠的是 end。
if ... else ... end:两条路
score = 45;
if score >= 60
disp('及格')
else
disp('不及格,加油')
end条件为真走 if 分支,为假走 else 分支,两边总会走其中一条。
if / else 执行流程:条件为真走 if 分支,为假走 else 分支
if ... elseif ... else ... end:多条路
score = 78;
if score >= 90
grade = 'A';
elseif score >= 80
grade = 'B';
elseif score >= 70
grade = 'C';
elseif score >= 60
grade = 'D';
else
grade = 'F';
end
disp(['成绩等级:', grade])elseif 是一个词,中间不能空格。从上往下逐条检查,命中一条就结束,后面的条件不再看。
switch ... case:按具体值对号
要比的是等于哪个具体值,而不是大小关系时,用 switch 往往更清楚:
day = 3;
switch day
case 1
disp('周一')
case {2, 3, 4}
disp('工作日')
case 5
disp('周五')
otherwise
disp('周末')
endswitch后面可以是标量或字符串。case可以跟一个值,也可以用花括号{...}写多个候选,命中任意一个即可。- 命中一个 case 后立刻离开,不需要像 C 语言那样再写
break。 otherwise可选,表示前面都没命中时的兜底。
字符串比较
判断两个字符串是否相等,用 strcmp(区分大小写):
color = 'red';
if strcmp(color, 'red')
disp('是红色')
end长度不同的字符串直接用 ==,经常会报错或得不到预期结果,相等判断优先用 strcmp。
自查清单
- if 语句结尾是什么关键字?漏了会怎样?
elseif和else if哪个写法对?- switch 命中一个 case 后还会继续往下执行吗?
- switch 想匹配多个值,case 后面怎么写?
- 判断字符串相等,能直接用
==吗?