如何更改if else切换案例

Sha*_*yan 0 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
Run Code Online (Sandbox Code Playgroud)

我想用switch, case声明重写一下.我怎样才能做到这一点?

rah*_*ma1 6

根据文档,您可以在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
Run Code Online (Sandbox Code Playgroud)

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

a(s) = 2;
a(s(s>2 & s<10)) = 0;
a(s(s>10 & s<20)) = 1;
Run Code Online (Sandbox Code Playgroud)