如何fscanf浮动和字符串的组合?

时间:2013-06-23 02:30:40

标签: matlab formatting

数据就像这样

5.1,3.5,1.4,0.2,Iris-setosa

我用这个

读它
data = fscanf(file, '%f,%f,%f,%f,%s');

事实证明data是一个float数组,而不是float和string的组合。那么如何从txt中读取这些数据?

2 个答案:

答案 0 :(得分:0)

来自fscanf的Matlab文档:

  

输出参数

A:数组。

如果格式包括:

  只有数字说明符,A是数字。 ...

只有字符或   字符串说明符(%c或%s),A是字符数组。 ......

A.   数字和字符说明符的组合,A是数字,of   班级双。 MATLAB将每个字符转换为数字   当量。即使格式明确,也会发生此转换   跳过所有数值(例如,格式为'%* d%s')。

所以你最好的选择是以字符串形式读取所有内容,然后使用str2num或str2double或类似方法将数字字符串转换为数值。

答案 1 :(得分:0)

或者,因为您知道有4个浮点值确实存储了一个浮点值,然后其余的存储了字符串的数字ASCII值,您可以随时拆分数据并转换您应该知道的部分。字符串到char。类似的东西:

flt = data(1:4); str = char(data(5:end));