How to replace matrix NaN with string from cell array

I have a cell array of strings which includes some unmarked numbers and some marked with '#':

cell = {
    '# 2.537'    '1.219'      '0.457'    '0.214'    '# 0.120'    '0.245'
    '3.244'      '# 1.400'    '0.649'    '0.515'    '0.207'      '0.075'}

I want to convert the cell to a data matrix and do some calculations for instance multiply with 2:

data=str2double(cell)*2

This will leave the numbers marked by '#' with the 'NaN'. Finally, I want two things where I need some help: 1) replace the 'NaN' with the original numbers marked with '#', for instance '# 2.537' into data(1,1), and 2) convert the data matrix into a cell array of strings. The order of step 1 and 2 is not important.

the output should be:

output = {
    '# 2.537'    '2.438'      '0.914'    '0.428'    '# 0.120'    '0.490'
    '6.488'      '# 1.400'    '1.298'    '1.030'    '0.414'      '0.150'}

Thanks in advance

 Risposta accettata

Stephen23
Stephen23 il 1 Ott 2018
Modificato: Stephen23 il 1 Ott 2018
C = {'# 2.537','1.219','0.457','0.214','# 0.120','0.245';'3.244','# 1.400','0.649','0.515','0.207','0.075'};
mat = str2double(C);
idx = ~isnan(mat);
vec = 2*mat(idx); % your calculation
C(idx) = arrayfun(@num2str,vec,'uni',0)

1 Commento

Johnny Birch
Johnny Birch il 1 Ott 2018
Modificato: Johnny Birch il 1 Ott 2018
That is perfect Stephen Cobeldick! Thanks a lot.

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2015b

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by