How to replace matrix NaN with string from cell array

4 ビュー (過去 30 日間)
Johnny Birch
Johnny Birch 2018 年 10 月 1 日
編集済み: Johnny Birch 2018 年 10 月 1 日

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

採用された回答

Stephen23
Stephen23 2018 年 10 月 1 日
編集済み: Stephen23 2018 年 10 月 1 日
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 件のコメント
Johnny Birch
Johnny Birch 2018 年 10 月 1 日
編集済み: Johnny Birch 2018 年 10 月 1 日
That is perfect Stephen Cobeldick! Thanks a lot.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

製品


リリース

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by