我有大量的.bin文件(10GB 60GB),我想导入MATLAB;每个二进制文件代表两个传感器的输出,因此有太多的数据列。这是a more manageable sized example of my data。
你会注意到有一个.txt版本的数据;我需要将.bin文件直接上传到MATLAB,我不能使用.txt版本,因为转换大文件需要几个小时。
我遇到的问题是.bin文件有标题信息,我似乎无法正确解释,因此我每次尝试时都无法在MATLAB中提取数据我似乎得到了胡言乱语的价值。
这是我对二进制标头的所有信息:
我非常感谢任何帮助/建议,我一直试图解决这个问题好几天了。
P.S。有人已经编写了一个函数来解决这个问题,但它似乎不适用于我的二进制数据(可能与我的数据的维度/大小有关):http://www.mathworks.co.uk/matlabcentral/fileexchange/27195-load-labview-binary-data
下面是我用来导入数据的代码,我相信d1和d2是我的二进制数据的维度。对于Dropbox中的示例文件,D2可能不正确,因为它已被截断。 我遇到的问题是代码提取我的数据并且我知道它是正确的,因为我可以使用.txt文件(也在下拉框中)检查它,但是在良好数据点之间存在随机错误值。这些错误值来自字符串后面的以下字符串:" NI_ChannelName","传感器A","传感器B"," NI_UnitDescription"和"伏特"散布在整个二进制文件中。
clear all
clc
fname = 'RTL5_57.bin';
fid = fopen(fname,'r','ieee-be');
d1 = fread(fid,4);
trash=fread(fid,2,'double');
d2 = fread(fid,4);
trash=fread(fid,1,'double');
data=fread(fid,'double');
答案 0 :(得分:0)
我想您需要更改数据格式。请参阅Matlab help。
答案 1 :(得分:0)
https://decibel.ni.com/content/docs/DOC-39038
范围:
1)在matlab中写一个二进制文件并读入labview。 2)在labview中写一个二进制文件并读入matlab。
背景:
重要提示:
在读取数据之前,您必须知道(3)文件中二进制数据的内容:
1)使用什么二进制格式(精度)来存储数据
2)要读取的文件中的确切数量。
3)Endianness 二进制文件中没有行或列。想象一下需要映射到2D数组的长行/长列。
二进制格式的数据资源。