Switch-case function problem

23 vues (au cours des 30 derniers jours)
Skomantas Tamulaitis
Skomantas Tamulaitis le 16 Oct 2020
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!

Réponse acceptée

Steve Eddins
Steve Eddins le 16 Oct 2020
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 commentaire
Skomantas Tamulaitis
Skomantas Tamulaitis le 16 Oct 2020
Very informative, THANK YOU!

Connectez-vous pour commenter.

Plus de réponses (1)

Johannes Hougaard
Johannes Hougaard le 16 Oct 2020
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 commentaire
Skomantas Tamulaitis
Skomantas Tamulaitis le 16 Oct 2020
That's perfect, thanks a lot!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by