How to make a while loop fill out an array?

3 Ansichten (letzte 30 Tage)
Chris Heard
Chris Heard am 5 Jan. 2019
Kommentiert: dpb am 6 Jan. 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 Kommentar
dpb
dpb am 5 Jan. 2019
HINT:
What happens to
Tstr(1,n) = string(Tlist(1,n));
when n > 1 later on when you use simply Tstr?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

dpb
dpb am 5 Jan. 2019
Bearbeitet: dpb am 5 Jan. 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 Kommentare
Chris Heard
Chris Heard am 6 Jan. 2019
Bearbeitet: Chris Heard am 6 Jan. 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 am 6 Jan. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by