Выполните одну из нескольких групп операторов
switchswitch_expressioncasecase_expressionstatementscasecase_expressionstatements... otherwisestatementsend
switch выполняет выражение и принимает решение выполнить одну из нескольких групп операторов. Каждым выбором является случай. switch_expression,
case case_expression, end
Стендовые испытания двигателя switch каждый случай до одного из case-выражений верны. Случай верен когда:
Для чисел, .case_expression == switch_expression
Для векторов символов, .strcmp(case_expression,switch_expression) == 1
Для объектов, которые поддерживают функцию eq, .case_expression == switch_expression
Для массива ячеек case_expression по крайней мере один из элементов массива ячеек совпадает с switch_expression, как задано выше для чисел, векторов символов и объектов.
Когда case-выражение верно, MATLAB® выполняет соответствующие операторы и выходит из блока switch.
Оцененный switch_expression должен быть скаляром или вектором символов. Оцененный case_expression должен быть скаляром, вектором символов или массивом ячеек скаляров или векторов символов.
Блок otherwise является дополнительным. MATLAB выполняет операторы только, когда никакой случай не верен.
case_expression не может включать операторы отношения, такие как < или > для сравнения с switch_expression. Чтобы протестировать на неравенство, используйте операторы if, elseif, else.
Оператор MATLAB switch не проваливается как оператор switch языка C. Если первым оператором 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
Задайте все переменные, необходимые для кода в конкретной ситуации в том случае. Поскольку MATLAB выполняет только один случай любого оператора switch, переменные, заданные в одном случае, не доступны для других случаев. Например, если ваша текущая рабочая область не содержит переменную 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. Это поведение отличается, чем поведение break и switch в C.