因此,我正在尝试处理一些数据文件,这些文件包含一个文本标题,后跟二进制数据,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] 删除。
我来说两句