首页 > 编程笔记 > MATLAB笔记 阅读:14

MATLAB switch语句的用法(附带实例)

MATLAB 程序中,switch 语句执行基于变量或表达式值的语句组,关键字 case 和 otherwise 用于描述语句组,只执行第一个匹配的情形。要用 switch,必须用 end 与之搭配。

switch-case 的具体语法结构如下:
switch value  % value 为需要进行判决的标量或字符串
    case test1  % 如果 value 等于 test1,则执行 command1,并结束此结构
        command1
    case test2  % 如果 value 等于 test2,则执行 command2,并结束此结构
        command2
    :
    case testk  % 如果 value 等于 testk,则执行 commandk,并结束此结构
        commandk
    otherwise   % 如果 value 不等于前面所有的值,则执行 commands,并结束此结构
        commands
end
1) switch-case 结构的调用格式保证了至少有一组指令组将会被执行。

2) switch 指令之后的表达式 value 应为一个标量或一个字符串。当表达式为标量时,比较命令为表达式==检测值;而当表达式为字符串时,MATLAB 将会调用字符串函数 strcmp() 来进行比较,即 strcmp(表达式, 检测值)。

3) case 指令之后的检测值不仅可以是一个标量或一个字符串,还可以是一个元胞数组。如果检测值是一个元胞数组,那么 MATLAB 将会把表达式的值与元胞数组中的所有元素进行比较。如果元胞数组中的某个元素与表达式的值相等,那么 MATLAB 会认为此次比较的结果为真,从而执行与该次检测相对应的命令组。

【实例】switch-case 结构的简单运用示例。在编辑器窗口中编写 M 文件并命名为 ex.m。
num = 3;
switch num
    case 1
        data = 'Monday'  % 如果 num=1,则定义 data='Monday'
    case 2
        data = 'Tuesday'  % 如果 num=2,则定义 data='Tuesday'
    case 3
        data = 'Wednesday'  % 如果 num=3,则定义 data='Wednesday'
    case 4
        data = 'Thursday'  % 如果 num=4,则定义 data='Thursday'
    case 5
        data = 'Friday'  % 如果 num=5,则定义 data='Friday'
    case 6
        data = 'Saturday'  % 如果 num=6,则定义 data='Saturday'
    case 7
        data = 'Sunday'  % 如果 num=7,则定义 data='Sunday'
    otherwise
        data = 'None!!!'  % 如果 num 不等于前面所有的值,则定义 data = 'None!!!'
end
运行 M 文件,输出结果如下:
data =
    'Wednesday'

【实例】求任意底数的对数函数值 y=lognx。打开编辑器窗口,编写如下程序:
clear
n = input('Enter the value of ''n'':'');
x = input('Enter the value of ''x'':'');
switch(n)
    case 1
        errordlg('出错');
    case 2
        y = log2(x);
    case exp(1)
        y = log(x);
    case 10
        y = log10(x);
    otherwise
        y = log10(x)/log10(n);
end
disp(y)
将该脚本 M 文件命名为ex.m。调用该文件,分别输入不同的值,运行程序,输出结果如下:
>> ex
Enter the value of 'n':2
Enter the value of 'x':10
3.3219

ex
Enter the value of 'n':6
Enter the value of 'x':32
1.9343
当 n=1 时,输入 x 值后,出现错误对话框,如下图所示:


图 1 错误对话框

注意,与多分支的 if 语句相比,switch 语句主要用于条件多且单一的情况,典型的应用情况是数学中的分段函数。此外,两者各有自己的优点和缺点,if 语句和 switch 语句的比较如下表所示。

表:if 语句和 switch 语句的比较
if 语句 switch 语句
比较复杂,特别是嵌套使用的 if 语句 可读性强,容易理解
要调用 strcmp() 函数比较不同长度的字符串 可比较不同长度的字符串
可检测相等和不相等 仅检测相等

相关文章