数据是这样的
5.1,3.5,1.4,0.2,Iris-setosa
当我用这个阅读它时
data = fscanf(file, '%f,%f,%f,%f,%s');
事实证明,这data
是一个浮点数组,而不是浮点数和字符串的组合。那么如何从txt中读取这些数据呢?
数据是这样的
5.1,3.5,1.4,0.2,Iris-setosa
当我用这个阅读它时
data = fscanf(file, '%f,%f,%f,%f,%s');
事实证明,这data
是一个浮点数组,而不是浮点数和字符串的组合。那么如何从txt中读取这些数据呢?
来自 fscanf 的 Matlab 文档:
输出参数
答:一个数组。
如果格式包括:
只有数字说明符,A 是数字。...只有字符或字符串说明符(%c 或 %s),A 是字符数组。...
数字和字符说明符的组合,A 是数字,属于 double 类。MATLAB 将每个字符转换为其等效的数值。即使格式明确跳过所有数值(例如,'%*d %s' 的格式),也会发生这种转换。
因此,最好的办法是将所有内容作为字符串读取,然后使用 str2num 或 str2double 或类似方法将数字字符串转换为数值。
或者,由于您知道有 4 个浮点值真正存储浮点值,然后其余的存储字符串的数字 ASCII 值,您可以随时拆分数据并将您知道应该是字符串的部分转换为字符。就像是:
flt = 数据(1:4);str = char(数据(5:end));