【发布时间】:2017-10-19 22:47:58
【问题描述】:
我正在努力将包含星号 ('*') 的字符数组转换为数字双精度。
我有一个基于从 .dat 文件导入的数据的字符向量元胞数组。例如,元胞数组C 包含一列元胞(例如,C{1,1}, C{2,1}, ... C{n,1}),每个元胞都包含一个字符向量,例如,C{1,1} 包含:
'23.000 * * 1.000 1.000 1.000 34.000 5.065 6.719'
当我尝试将 C{1,1} 转换为数字双精度时,MATLAB 返回一个空双精度,例如,
new_double = str2num(C{1,1})
new_double =
[]
当我手动删除星号时,代码有效:
new_double = str2num(C{1,1})
new_double =
23.0000 1.0000 1.0000 1.0000 34.0000 5.0650 6.7190
我要做的就是将数据读入双精度数组以进行进一步处理。我不在乎命令是否忽略星号或用 NaN 替换它们 - 带星号的数据对我来说并不重要。重要的是我从最后两列读取数据,例如 5.065 6.71。不幸的是,我无法索引它们,因为它们嵌入在字符向量中。
我也尝试过使用:
c2 = C{1,1};
new_double = sscanf(c2,'%f%');
但它在星号处停止读取,例如,
new_double =
23
我进行了广泛搜索,唯一有用的帖子是:https://uk.mathworks.com/matlabcentral/answers/127847-how-to-read-csv-file-with-asterix 但是,我无法使用此方法,因为我使用的是字符向量而不是分隔数据。
【问题讨论】:
标签: arrays string matlab double character