replace number by string

4 Ansichten (letzte 30 Tage)
Mohammed Kamruzzaman
Mohammed Kamruzzaman am 9 Apr. 2015
Beantwortet: Jos (10584) am 10 Apr. 2015
I have a vector with numeric values and I would like to replace the number in a given cell by a string (data are attached). For instance, 23=BDHE, 9997=BEIS, 11=CUAL, 4=CTGB, 60=MYMU, 1010=INJP, 3006=YNTA, and 80=TRQO. Thanks in Advance.

Akzeptierte Antwort

Mohammad Abouali
Mohammad Abouali am 10 Apr. 2015
Well, a quick solution would be:
valueCell={ 23,23,23, ...
9997,9997,9997,9997,9997,9997,9997, ...
11,11,11,11,11,11,11, ...
4,4,4,4,4, ...
60,60,60,60,60,60, ...
1010,1010,1010,1010,1010,1010,1010,1010, ...
3006,3006,3006,3006,3006, ...
80,80,80,80,80};
strCell=cell(size(valueCell));
strCell( cellfun(@(c) c==23,valueCell) )={'BDHE'};
strCell( cellfun(@(c) c==9997,valueCell) )={'BEIS'};
strCell( cellfun(@(c) c==11,valueCell) )={'CUAL'};
strCell( cellfun(@(c) c==4,valueCell))={'CTGB'};
strCell( cellfun(@(c) c==60,valueCell) )={'MYMU'};
strCell( cellfun(@(c) c==1010,valueCell) )={'INJP'};
strCell( cellfun(@(c) c==3006,valueCell) )={'YNTA'};
strCell( cellfun(@(c) c==80,valueCell) )={'TRQO'};
But a better solution would be
valueCell={ 23,23,23, ...
9997,9997,9997,9997,9997,9997,9997, ...
11,11,11,11,11,11,11, ...
4,4,4,4,4, ...
60,60,60,60,60,60, ...
1010,1010,1010,1010,1010,1010,1010,1010, ...
3006,3006,3006,3006,3006, ...
80,80,80,80,80};
valueTable=cell2table(valueCell','VariableNames',{'value'});
conversionTable=table([ 23, 9997, 11, 4, 60, 1010, 3006, 80]', ...
{'BDHE','BEIS','CUAL','CTGB','MYMU','INJP','YNTA','TRQO'}', ...
'VariableNames',{'value','str'});
strTable=join(valueTable,conversionTable);
  1 Kommentar
Mohammed Kamruzzaman
Mohammed Kamruzzaman am 10 Apr. 2015
Thank you so much. Your code is perfect.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jos (10584)
Jos (10584) am 10 Apr. 2015
% conversion rules V(k) corresponds to S(k):
V = [ 3 4 6 9 1] ;
S = {'AA','B','CCC','D','EEE'} ;
ValuesIn = [3 6 4 6 3 1 9 9 0 4 4 1 3] % note the 0!
% engine to convert ValuesIn to StrOut
StrOut = repmat({'Unknown'},size(ValuesIn)) ;
[tf, idx] =ismember(ValuesIn, V) ;
StrOut(tf) = S(idx(tf))

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by