MATLAB 7.13.0.564(R2011b),UBUNTU 12.04(精确)64位
我正在尝试从二进制文件中读取2D数据的子集(不是从头开始)。我知道1个2D数据集是5838952字节:
>>whos
DATA 5747x127 5838952 double
我尝试使用fseek跳过前400个2D数据集:
fseek(fid,5838952*400,'bof');
然后阅读接下来的100个数据集:
for i = 1:100
DATA(i,:,:) = fread(fid,[5747 127],'int16');
end
但是代码继续在前100个2D数据集中读取而不跳过我想要的前400个。谁知道为什么?谢谢!
编辑:
如果我这样做
fseek(fid,5838952*400,'bof');
position = ftell(fid)
我明白了:
position =
0
答案 0 :(得分:2)
您正在寻找文件的末尾。运行
ferror(fid)
后立即
fseek(fid,5838952*400,'bof');
数据在文件中是int16,但是你在MATLAB中加载为double,因此大小是字节数的四倍。你应该寻求:
status = fseek(fid, 5747 * 127* 400 * 2, 'bof')