0

数据是这样的

5.1,3.5,1.4,0.2,Iris-setosa

当我用这个阅读它时

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

事实证明,这data是一个浮点数组,而不是浮点数和字符串的组合。那么如何从txt中读取这些数据呢?

4

2 回答 2

0

来自 fscanf 的 Matlab 文档:

输出参数

答:一个数组。

如果格式包括:

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

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

数字和字符说明符的组合,A 是数字,属于 double 类。MATLAB 将每个字符转换为其等效的数值。即使格式明确跳过所有数值(例如,'%*d %s' 的格式),也会发生这种转换。

因此,最好的办法是将所有内容作为字符串读取,然后使用 str2num 或 str2double 或类似方法将数字字符串转换为数值。

于 2013-06-23T04:31:34.780 回答
0

或者,由于您知道有 4 个浮点值真正存储浮点值,然后其余的存储字符串的数字 ASCII 值,您可以随时拆分数据并将您知道应该是字符串的部分转换为字符。就像是:

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

于 2013-06-23T04:48:54.670 回答