【发布时间】:2014-08-13 11:44:13
【问题描述】:
我需要帮助将二进制文件中的数据读入一个 100000x16 维度的数组。我正在使用八度音阶。
这是文件外观截图的链接:http://s29.postimg.org/uclh7whtz/Screenshot.png
我尝试过使用 fscanf 和 fread,但不知道如何使用它们 - 使用它们会影响精度,等等...
感谢您的帮助!
【问题讨论】:
我需要帮助将二进制文件中的数据读入一个 100000x16 维度的数组。我正在使用八度音阶。
这是文件外观截图的链接:http://s29.postimg.org/uclh7whtz/Screenshot.png
我尝试过使用 fscanf 和 fread,但不知道如何使用它们 - 使用它们会影响精度,等等...
感谢您的帮助!
【问题讨论】:
您也可以通过以下方式在MATLAB中使用"dlmread"函数。
a=dlmread('file.dat','\t',1,0);
这将跳过标题行并读取完整的数字矩阵。这是一个例子:
file name=example.dat
time x1 y1 z1
0.000 0.084 0.015 0.0181
0.016 0.008 0.001 0.8012
0.032 0.081 0.064 0.235
a=dlmread('example.dat','\t',1,0);
a =
0 0.0840 0.0150 0.0181
0.0160 0.0080 0.0010 0.8012
0.0320 0.0810 0.0640 0.2350
请通过dlmread 帮助获取更多帮助。
【讨论】:
如果它搞砸了精度,很有可能您只需将 16 行的值指定为浮点数 %f,如下所示:
fid=fopen(strcat(Name,'.dat'));
C=textscan(fid, '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f'); % one '%f' for row, is that 16?
fclose(fid);
这当然会忽略标题(但我猜你想以任何方式这样做,不是吗?)。
【讨论】: