MatLab中的二进制数据

凯西·丹尼尔(Casey Daniel)

因此,我正在尝试处理一些数据文件,这些文件包含一个文本标题,后跟二进制数据,16位带符号整数(最低有效字节在前)。

我似乎无法正确打开二进制数据。文本标题的长度是可变的。我已经尝试了以下方法,但是我的问题是数据实际上并没有存储为二进制数据,但是已经是一个数字,但是不能正确存储。标头的长度是可变的,所以我不能告诉它在没有打开文件的情况下读取那么多字符。

fileName = 'PATH/TO/FILE/FILE_NAME.DAT';
dataFile = fopen(fileName);
header = '';
i = 1;
%dataContents = fileread(fileName);
dataContents = fread(dataFile);
while i < 115
    char = dataContents(i);
    header = [header char];
    if char == '}'
        break
    end
    i = i + 1;
end
header = header(2:end-1);
headerSplit = strsplit(header,',');
fileSize = str2double(headerSplit(17)); 
binaryData = dataContents(i:end);
data = [];
j = 1;
num = binaryData(1:50)
while j < fileSize
    data = [data, bin2dec(num2str(binaryData(j:j+1)))];
    j = j + 2;
end
length(data)

任何帮助将是巨大的。我是Matlab的新手,所以我可能缺少一些简单的东西。

丹尼尔

不知道数据格式,几乎不可能给出详细的建议。您可能需要根据数据格式设置precision参数fread

解析标头后,您就知道数据从哪里开始。使用fseek(dataFile, numel(header)+2, 'bof')你的文件句柄设置到文件开始的位置。然后fread以匹配的精度再次开始读取

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章