将带有标题信息的二进制LabVIEW文件导入MATLAB?

时间:2014-01-23 20:40:42

标签: matlab binary bigdata fread labview

我有大量的.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');

2 个答案:

答案 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数组的长行/长列。

二进制格式的数据资源。

http://cse.unl.edu/~sincovec/Matlab/Lesson%2024/Binary/CS211%20Lesson%2024%20-%20Binary%20File%20Input-Output.htm