目录
switch, case, otherwise语句是执行多组语句中的一组。
一.语法
-
switch switch_expression
-
case case_expression
-
statements
-
case case_expression
-
statements
-
...
-
otherwise
-
statements
-
end
提示
-
case_expression
不能包含关系运算符(例如<
或>
)来与switch_expression
进行比较。要测试不相等性,使用if,elseif,else语句。 - MATLAB
switch
语句不会像C语言的switch
语句一样失效。如果第一个case
语句为true
,则 MATLAB 不会执行其他case
语句。例如:
-
result =
52;
-
-
switch(result)
-
case
52
-
disp(
'result is 52')
-
case {
52,
78}
-
disp(
'result is 52 or 78')
-
end
-
result
is
52
-
在该 case 内定义特定 case 中的代码所需要的变量。由于 MATLAB 仅执行任何
switch
语句的一个 case,因此一个 case 内定义的变量不适用于其他 case。例如,如果当前工作区不包含变量x
,则仅定义x
的情况可以使用它:
-
switch choice
-
case
1
-
x = -pi:
0.01:pi;
-
case
2
-
% does not know anything about x
-
end
-
MATLAB
break
语句会结束for
或while
循环的执行,但不结束switch
语句的执行。此行为不同于 C 语言中break
和switch
的行为。
二.说明
switch
计算表达式并选择执行多组语句中的一组。每个选项为一个 case。switch_expression
, casecase_expression
, end
switch
块会测试每个 case,直至一个 case 表达式为 true。case 在以下情况下为 true:
-
对于数字,
。case_expression
==switch_expression
-
对于字符向量,
strcmp(
。case_expression
,switch_expression
) == 1 -
对于支持
eq
函数的对象,
。重载的case_expression
==switch_expression
eq
函数的输出必须为逻辑值或可转换为逻辑值。 -
对于元胞数组
case_expression
,元胞数组的至少一个元素与switch_expression
匹配,如上述对数字、字符向量和对象的定义。
当 case 表达式为 true 时,MATLAB® 执行对应的语句,然后退出
switch
块。
计算的
switch_expression
必须为标量或字符向量。计算的case_expression
必须为标量、字符向量或者标量或字符向量的元胞数组。
otherwise
块是可选的。仅当没有 case 为 true 时,MATLAB 才会执行这些语句。
三.示例
1.比较单个值
根据在命令提示符下输入的值有条件地显示不同的文本。
-
n = input(
'Enter a number: ');
-
-
switch n
-
case
-1
-
disp(
'negative one')
-
case
0
-
disp(
'zero')
-
case
1
-
disp(
'positive one')
-
otherwise
-
disp('other value')
-
end
在命令提示符下,输入数字 1。
positive one
重复执行该代码并输入数字 3。
other value
2.与多个值进行比较
基于 plottype
的值确定要创建哪种类型的绘图。如果 plottype
为 'pie'
或 'pie3'
,则创建一个三维饼图。使用元胞数组包含两个值。
-
x = [
12
64
24];
-
plottype =
'pie3';
-
-
switch plottype
-
case
'bar'
-
bar(x)
-
title(
'Bar Graph')
-
case {
'pie',
'pie3'}
-
pie3(x)
-
title(
'Pie Chart')
-
otherwise
-
warning('Unexpected plot type. No plot created.')
-
end
转载:https://blog.csdn.net/jk_101/article/details/110840137