Switch-case function problem

17 ビュー (過去 30 日間)
Skomantas Tamulaitis
Skomantas Tamulaitis 2020 年 10 月 16 日
コメント済み: Skomantas Tamulaitis 2020 年 10 月 16 日
Hello, I am trying to get the values of the vector color to be displayed as 0 = yellow; 1 = red; 2 = green;
3 = blue; using switch-case function. I got this but it doesn't work.
color=[2,1,3,0,1,3,1,0,2]
cName ={'yellow','red','green','blue'};
for ind=1:length(color)
switch ind
case color ==0
disp(cName{'yellow'});
case color==1
disp(cName{'red'});
case color==2
disp(cName{'green'});
case color== 3
disp(cName{'blue'});
end
end
Could someone help me with this?
THANKS!

採用された回答

Steve Eddins
Steve Eddins 2020 年 10 月 16 日
First variation: fix the switch and case lines and the indexing into cName.
switch color(ind)
case 0
disp(cName{ind+1});
case 1
disp(cName{ind+2});
Second variation: dispense with the switch statement altogether.
color=[2,1,3,0,1,3,1,0,2]
cName ={'yellow','red','green','blue'};
for ind=1:length(color)
disp(cName{color(ind)+1})
end
Third variation: use a string array instead of a cell array of char vectors. This is the modern way to handle text in MATLAB.
color=[2,1,3,0,1,3,1,0,2]
cName = ["yellow", "red", "green", "blue"];
for ind=1:length(color)
disp(cName(color(ind)+1))
end
  1 件のコメント
Skomantas Tamulaitis
Skomantas Tamulaitis 2020 年 10 月 16 日
Very informative, THANK YOU!

サインインしてコメントする。

その他の回答 (1 件)

Johannes Hougaard
Johannes Hougaard 2020 年 10 月 16 日
If you wish to solve the problem using a switch/case sentence you should omit the == as that is assumed for the case. Furthermore the indexing to your cName variable should be numeric - not as characters.
This could be solved by
color=[2,1,3,0,1,3,1,0,2];
cName ={'yellow','red','green','blue'};
for ind=1:length(color)
switch color(ind)
case 0
disp(cName{1});
case 1
disp(cName{2});
case 2
disp(cName{3});
case 3
disp(cName{4});
end
end
Handling this problem in an even simpler for loop would be rather easy as well
color=[2,1,3,0,1,3,1,0,2];
cName ={'yellow','red','green','blue'};
for ind= color
disp(cName{ind+1});
end
  1 件のコメント
Skomantas Tamulaitis
Skomantas Tamulaitis 2020 年 10 月 16 日
That's perfect, thanks a lot!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by