Switch-case function problem

19 visualizaciones (últimos 30 días)
Skomantas Tamulaitis
Skomantas Tamulaitis el 16 de Oct. de 2020
Comentada: Skomantas Tamulaitis el 16 de Oct. de 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!

Respuesta aceptada

Steve Eddins
Steve Eddins el 16 de Oct. de 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

Más respuestas (1)

Johannes Hougaard
Johannes Hougaard el 16 de Oct. de 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

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by