我很努力将包含星号('*')的字符数组转换为数字双精度。在MATLAB中将包含星号的字符数组转换为数字
我有一个基于从.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然而,我不能使用这种方法,因为我使用的是字符矢量而不是分隔数据。
聪明。肯定会击败正则表达式的方法。我不知道'str2double'可以做到这一点。 – rayryeng
@rayryeng谢谢!使用正则表达式也是一个不错的方法 –
谢谢你们提供的内容丰富且快速的回复。我从两个学会了很多 。时间传播关于'strsplit'的字! – PyjamaNinja