switch, case, otherwise

sup: Matlab Conditional Statement


switch expression
    case value_1
        block_1
    case value_2
        block_2
    otherwise
        block_3
end

以上语句执行中, 先计算表达式 expression 的值, 当结果等于1某个 case 语句的 value_i 时, 就执行该 case 语句下的代码块; 如果所有 case 语句的 value_i 都和 expression 计算结果不相等, 则执行 otherwise 语句下的代码块. 等价于以下 if, else, elseif 语句

x = expression;
if isequal(x,value_1)
    block_1
elseif isequal(x,value_2)
    block_2
else
    block_3
end
  • 所以与 if, else, elseif 语句类似, otherwise 语句可选, 有的话条件完备
  • case 语句可以任意多, 且都同级互斥
  • 但这里要求 expression 的返回值只能是 scalarchar vector, 与 if, else, elseif 中条件表达式可以是任意数组不同
  • 特别的, value_i 可为 cell array, 此时执行 block_i 若存在 value_i 中 cell 与 expression 相等

Footnotes

  1. isequal 是我试验下来最适合描述 “相等” 的函数