MATLAB: Replace number by string

num2str

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.

Best Answer

  • 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);