How to make a while loop fill out an array?

3 visualizaciones (últimos 30 días)
Chris Heard
Chris Heard el 5 de En. de 2019
Comentada: dpb el 6 de En. de 2019
Hello, I am trying to use a while loop to move through an array of strings and allocate the strings to a corresponding number system. Tstr provides the string array for the switch input. The output should be 1 1 7 1 2 1 4 1 3 complementing 'DEB' 'DEB' 'TFR' 'DEB' 'DD' 'DEB' 'FPI' 'DEB' 'CPT' however it returns 1 8 8 8 8 8 8 8 8. Please help me to return the intended array.
Tlist = { 'DEB' 'DEB' 'TFR' 'DEB' 'DD' 'DEB' 'FPI' 'DEB' 'CPT'};
l = length(Tlist);
n=1;
while n <= l
Tstr(1,n) = string(Tlist(1,n));
switch Tstr
case 'DEB'
Tt(1,n) = 1;
case 'DD'
Tt(1,n) = 2;
case 'CPT'
Tt(1,n) = 3;
case 'FPI'
Tt(1,n) = 4;
case 'FPO'
Tt(1,n) = 5;
case 'CHG'
Tt(1,n) = 6;
case 'TFR'
Tt(1,n) = 7;
otherwise
Tt(1,n) = 8;
end
n=n+1;
end
  1 comentario
dpb
dpb el 5 de En. de 2019
HINT:
What happens to
Tstr(1,n) = string(Tlist(1,n));
when n > 1 later on when you use simply Tstr?

Iniciar sesión para comentar.

Respuesta aceptada

dpb
dpb el 5 de En. de 2019
Editada: dpb el 5 de En. de 2019
Tlist = { 'DEB' 'DEB' 'TFR' 'DEB' 'DD' 'DEB' 'FPI' 'DEB' 'CPT'};
lup={'DEB','DD','CPT','FPI','FPO','CHG','TFR'};
>> [~,Tt]=ismember(Tlist,lup)
Tt =
1 1 7 1 2 1 4 1 3
>>
for fixup for missing elements add
Tt(Tt==0)=numel(lup)+1;
  2 comentarios
Chris Heard
Chris Heard el 6 de En. de 2019
Editada: Chris Heard el 6 de En. de 2019
Thanks a lot. Don't fully understand why the loop didn't work still but at least I can crack on with it now.
EDIT. Got it, need to switch on Tstr(1,n).
dpb
dpb el 6 de En. de 2019
Right, that would work. While the vectorized solution is probably the way to go, the loop/switch construct variable doesn't need the subscript at all...
Tstr=string(Tlist(1,n));
switch Tstr
...
Or, you could even eliminate the temporary entirely.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Parallel for-Loops (parfor) en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by