我有一个文件(name.dat)是二进制数据, 它有12行标题,然后只有一列10 ^ 6个浮动数据点。
我在Matlab中搜索了我可以做的
fid=fopen('name.dat','r');
A= fscanf(fid, '%f');
fclose(fid);
当运行上面三行代码时,A为空; 它是有线的。
你可以帮我解决这个问题吗?
谢谢
答案 0 :(得分:4)
最后,我弄清楚了。 当我用文本编辑器打开我的.dat文件时,它有标题和数据部分。 我可以看到标题(ASCII),但数据部分是随机机器码,这意味着它是二进制数据,我也知道它是浮点数。
所以我没有使用“textscan或fscan”,而是使用matlab中的“fread”函数来加载数据。
在加载到matlab之前,我删除了标题行,如果没有删除,加载的数据大小是不同的和错误的。
fid=fopen('name.dat','rt');
A = fread(fid,'*float32');
fclose(fid);
A是最终的数组数据。
答案 1 :(得分:2)
以下是使用TEXTSCAN函数的示例:
header line 1
header line 2
0.81428
0.24352
0.92926
0.34998
0.1966
0.25108
0.61604
0.47329
0.35166
0.83083
fid = fopen('name.dat','rt');
A = textscan(fid, '%f', 'HeaderLines',2);
A = A{1};
fclose(fid);
A
现在是带有十个数字的向量