问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

matlab switch 语句能否判断多变量?

发布网友 发布时间:2022-04-23 15:11

我来回答

4个回答

热心网友 时间:2022-04-11 17:41

您好,比如
switch expr
case {a1, a2,...}
do_something_1;
case b
do_something_2;
case {c1,c2,...}
do_something_3;
...
end

expr表达式从上至下寻找匹配,当它与某个case后面的元胞数组中的某个元素匹配,则执行该case分支的操作,然后跳出switch-case结构。

注意,Matlab中switch后面的表达式可以是显式逻辑值,即逻辑0和1(因此含比较运算的表达式不算在内)、标量或者字符串,因而case后面如果不是这些类型的值,那么就不匹配。
与switch语句相比,if语句则灵活得多,if后面的表达式几乎可以是任意的表达式。

下面举个综合的例子来说明switch表达式的特性,比如
switch 1

case [2,1]

disp('case1')

case {3,1}

disp('case2')

case {1,2}

disp('case3')

end
复制代码
结果返回 case2
这说明,不符合条件的case(第一个case类型不对)不匹配;出现重叠的情况(第二、三个case),switch仅仅匹配最前面一个。
之所以Maltab只是匹配最前面的,就是因为它支持了case后面可以使用元胞数组的情况,这就相当于多个重复匹配的case集中在一起(这就相当于实现C/C++中不加break的情形)。

另外,如果使用if-elseif结构来实现上述功能,也是可行的,但是if-elseif本身是一个实现复杂分支程序流的结构,对于case情况非常多的时候,使用if-elseif不但代码量很大,而且可读性也没switch那么清晰(杀鸡焉用牛刀)。而使用switch-case结构,则能缩减代码量,可读性也好得多。

对于效率方面,switch-case和if-elseif结构实现同样功能,究竟孰优孰劣,这个就有待测试的检验了。个人认为if-elseif的效率更低,有2点原因:

1. switch-case语句只需要计算一次switch后面的表达式,然后去匹配各个case;而if-elseif对于每个if后面的表达式都要进行计算,然后判断。

2. 从汇编的角度来说,if...elseif编译完后是很多条比较指令和跳转指令,而switch-case语句编译完之后,则是一张地址表,使用case的值做表的索引,因此case里的值最好步进为一。

总的来说,switch-case语句牺牲了灵活性,但提高了效率并使得代码整洁。追问那就是说向这个情况 只能用if来完成了?

热心网友 时间:2022-04-11 18:59

switch(){case 常量表达式1: 语句1; . . . .case 常量表达式n: 语句n;default: 语句n+1;}说明:1 switch后面的表达式,ANSI允许它是任何类型2 当表达式式值和case后面常量表达式值相等的时候,就执行.如果没有一个相等就执行default后面的语句.3每个case后面的值必须是不等的4 每个case和default的次序不影响程序执行5如果执行完一个case 就跳到下一个case 如果case后面有break则执行后跳出switch 可以表达式,但多个判断就没见过了

热心网友 时间:2022-04-11 20:34

不能。switch A case 1 case 2 end 句式是判断A=1时如何操作, A=2时如何操作,不是判断A<或>,若要判断>,<,则要用if 句式。

热心网友 时间:2022-04-11 22:25

不能。switch 就是求表达式的值,然后找 case,一个 case 只能带一个值。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑怎么更换cpu风扇cpu风扇的更换教程 韮菜加什么食材做出来的美食更好吃? 郑州大学信息工程学院简介 郑州大学信息工程学院怎么样 郑州大学信息工程学院学生构成和教师队伍 ...第一跑道周长是250米,请问第5跑道一圈是多少米? 为何现在社会青年说不怕警察结果警察来了,不敢跟警察动手,以前一些自以 ... 国产鸿蒙系统无纸化会议系统 您好泰康保险公司在职场装修工程明显是暗箱操作 真正投标人被骗 工程快... 纠结要不要去做双眼皮。 matlab switch-case语句疑问 字符串 在matlab中switch怎么用? MATLAB语言中switch语句的使用问题 matlab switch case 不太会用,程序一直有错。 matlab switch/case求助 关于matlab switch case语句 matlab switch-case的疑问 求指导,matlab中switch如何用? linux与ubuntu有什么不同点? MATLAB语言中switch语句如何使用? Matlab下的switch-case语句 Ubuntu Linux是什么? ubuntu和linux哪个好点? ubuntu linux是啥系统 ubuntu和linux的关系是什么?都是操作系统?还有内核是什么意思? Ubuntu和Linux怎么念,要中文发音 ubuntu和Linux的关系是什么? ubuntu linux的四个版本有什么区别?详细 ubuntu与linux的区别在哪? linux和ubuntu有什么区别?哪个好用? matlab switch怎么使用 在matlab中,用switch...case开关结构将百分制的学生成绩转换为五分制的成绩输出 matlab 中if和switch的差别是什么? matlab switch语句:以下程序哪里有问题?为什么进入不了case语句?谢谢各位的帮助~~O(∩_∩)O~ matlab中if和switch函数问题 求matlab中的switch模块的用法? 适合父母的微信昵称? MATLAB代码中的switch语句怎么使用,知道的朋友能否告知一下,谢谢。 适合一家人的微信群的名字大全? 家庭微信群名字大全? 家庭微信名称大全 华为手机拼音键盘怎么改成小写字母? 拼音输入法怎么变成小写? 华为手机26键打字怎么让拼音都是小写的? 键盘上小写字母是哪个键 手机输入法,转为中文拼音26键的时候。显示的是大写字母。怎么调整为小... iphone怎么把拼音键盘弄成小写字母 急!急!急!搜狗手机输入法拼音输入时键盘怎么设置成小写字母。 怎样才能把手机键盘的中文拼音变成小写的? 键盘拼音26键如何转换成小写字母的键盘?