2017-06-22 38 views
0

我有這樣的代碼如何改變,如果別的此刻的切換情況下

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

爲什麼? switch語句實際上並不適合在此使用。 – excaza

+0

我可以重寫嗎? – Shayan

+0

如果'k == 10'會怎麼樣? – rahnema1

回答

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或開關/箱,而不是你可以使用索引:

a(s) = 2; 
a(s(s>2 & s<10)) = 0; 
a(s(s>10 & s<20)) = 1; 
相關問題