如何更改if else切换案例

时间:2017-06-22 19:16:10

标签: matlab if-statement switch-statement

我目前有这个代码

s=[1 3 4 9 12 16 18 19 20 21];
for k=s   
    if k>2 & k<10
        a(k)=0;

    else if k>10 & k<20
          a(k)=1; 
        else a(k)=2;
        end
    end
end

我想使用switch, case语句重写此内容。我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

根据documentation,您可以在case表达式中使用单元格数组。

for k=s
    switch k
        case num2cell(3:9)
            a(k)=0;
        case num2cell(11:19)
            a(k)=1;
        otherwise
            a(k)=2;
    end
end

但是,您通常不想使用if / else或switch / case,而是可以使用索引:

a(s) = 2;
a(s(s>2 & s<10)) = 0;
a(s(s>10 & s<20)) = 1;