Filter löschen
Filter löschen

How to replace matrix NaN with string from cell array

9 Ansichten (letzte 30 Tage)
Johnny Birch
Johnny Birch am 1 Okt. 2018
Bearbeitet: Johnny Birch am 1 Okt. 2018

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

Akzeptierte Antwort

Stephen23
Stephen23 am 1 Okt. 2018
Bearbeitet: Stephen23 am 1 Okt. 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 Kommentar
Johnny Birch
Johnny Birch am 1 Okt. 2018
Bearbeitet: Johnny Birch am 1 Okt. 2018
That is perfect Stephen Cobeldick! Thanks a lot.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Produkte


Version

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by