Matlab使用switch来判断执行哪条语句

文章目录(展开/隐藏→)

展开
3.5
(4)

前文中,我们说了Matlab使用for编写循环语句,使用if编写判断语句,使用while编写循环执行语句。今天,我们再带来一篇使用switch来判断多条语句中判断需要执行的语句。你可以理解为给定一个值,判断该值的大小,根据不同的值,输出不同的语句。当然,跟通俗的理解为:多个值的判断比较。

本文,我们主要讲解Matlabswitch函数的常见用法、语法说明、比较单个值、与多个值进行比较。当然,本文对Matlab编程与数据处理方面,都有所帮助。

Matlab使用switch来判断执行哪条语句

下面,我们首先给出Matlab中关于switch函数的帮助文档如下:

>> help switch
 switch Switch among several cases based on expression.
    The general form of the switch statement is:
 
        switch switch_expr
          CASE case_expr, 
            statement, ..., statement
          CASE {case_expr1, case_expr2, case_expr3,...}
            statement, ..., statement
         ...
          OTHERWISE, 
            statement, ..., statement
        END
 
    The statements following the first CASE where the switch_expr matches
    the case_expr are executed.  When the case expression is a cell array
    (as in the second case above), the case_expr matches if any of the
    elements of the cell array match the switch expression.  If none of
    the case expressions match the switch expression then the OTHERWISE
    case is executed (if it exists).  Only one CASE is executed and
    execution resumes with the statement after the END.
 
    The switch_expr can be a scalar or a string.  A scalar switch_expr
    matches a case_expr if switch_expr==case_expr.  A string
    switch_expr matches a case_expr if strcmp(switch_expr,case_expr)
    returns 1 (true).
 
    Only the statements between the matching CASE and the next CASE,
    OTHERWISE, or END are executed.  Unlike C, the switch statement
    does not fall through (so BREAKs are unnecessary).
 
    Example:
 
    To execute a certain block of code based on what the string, METHOD, 
    is set to,
 
        method = 'Bilinear';
 
        switch lower(method)
          case {'linear','bilinear'}
            disp('Method is linear')
          case 'cubic'
            disp('Method is cubic')
          case 'nearest'
            disp('Method is nearest')
          otherwise
            disp('Unknown method.')
        end
 
        Method is linear

常见用法

switch switch_expression
   case case_expression
      statements
   case case_expression
      statements
    ...
   otherwise
      statements
end

语法说明

switch switch_expression, case case_expression, end计算表达式并选择执行多组语句中的一组。每个选项为一个case

switch块会测试每个case,直至一个case表达式为truecase在以下情况下为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块是可选的。仅当没有casetrue时,MATLAB才会执行这些语句。

比较单个值

根据在命令提示符下输入的值有条件地显示不同的文本。

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

与多个值进行比较

基于plottype的值确定要创建哪种类型的绘图。如果plottypepiepie3,则创建一个三维饼图。使用元胞数组包含两个值。

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
Matlab使用switch来判断执行哪条语句

友情提示

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语句会结束forwhile循环的执行,但不结束switch语句的执行。此行为不同于C语言中breakswitch的行为。

共计4人评分,平均3.5

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/program/matlab-function-switch.html

(1)
上一篇 2021年04月10日 18:39
下一篇 2021年04月12日 19:31

相关推荐

  • Matlab快速入门之矩阵和数组

    文章目录(展开/隐藏→) 展开数组创建矩阵和数组运算矩阵串联复数矩阵 4.3 (3) 这篇来讲一下Matlab中矩阵和数组的应用,MATLAB是matrix laboratory的…

    2022年09月05日
    068
  • Matlab等高线图矩阵式绘制函数contour

    文章目录(展开/隐藏→) 展开常见用法语法说明函数的等高线二十个层级的等高线一个层级的等高线虚线等高线带标签的等高线自定义线宽不连续曲面上的等高线 4.3 (3) 今天,给各位带来…

    2021年01月08日
    050
  • 如何修改已经创建好的excel数据饼图

    文章目录(展开/隐藏→) 展开背景颜色修改饼图文本修改饼图边框修改饼图阴影修改饼图颜色修改图标标题修改切换行、列 4.3 (3) 前文中,我们利用数据创建了excel饼图,由于篇幅…

    2021年04月24日 电脑技巧
    054
  • Matlab meshc带等高线图的网格曲面图

    文章目录(展开/隐藏→) 展开常见用法语法说明在网格图下显示等高线图为网格和等高线图指定颜色图颜色修改网格和等高线图的外观 4 (2) 今天,给各位带来Matlab中可以绘制带等高…

    2021年02月17日
    033
  • Matlab使用rand函数随机生成数字或矩阵

    文章目录(展开/隐藏→) 展开常见用法语法说明由随机数组成的矩阵指定区间内的随机数随机整数随机复数重置随机数生成器由随机数组成的三维数组指定随机数的数据类型根据现有数组克隆大小根据…

    2021年04月17日
    1169
  • Matlab快速入门之文本和字符

    文章目录(展开/隐藏→) 展开字符串数组中的文本字符数组中的数据 4.3 (3) 本文中,将会讲解Matlab中关于文本和字符的创建。其中,文本指的是字符串数组中的文本;字符指的是…

    2022年09月07日
    035

发表回复

登录后才能评论
本站APP