Matlab:读取部分二进制数据

时间:2013-04-23 15:50:57

标签: matlab binary fread

我有一个数据集(二进制文件),我只想读取保存到4D矩阵的X(和相应的Y)数据的前半部分:

 for i = 1:vols
    for j = 1:cols
       XY(i,:,:,j) = fread(fid,[X Y],'int16');
    end
 end

如何修改上述循环,只有第一个例如每个vols和cols读入10个X数据(和相应的Y)?

感谢

1 个答案:

答案 0 :(得分:1)

您需要按以下顺序实现每个vols和cols的读数: 读取第一个输入X的Y的一部分,而不是跳过该行的其余部分,读取第二个输入X的Y的一部分,等等。

在读取所请求的X行数后,您需要在读取下一行(vols,cols)之前跳过矩阵的其余部分。

要跳过部分矩阵,您可以使用fseek功能。

设X_count和Y_cound是子矩阵的维数; X_total和Y_total是总矩阵的维数。您需要以下内容:

for i = 1:vols
   for j = 1:cols
      for k=1:X_count
          XY(i,k,:,j) = fread(fid,Y_count,'int16');
          fseek(fid,(Y_total-Y_count)*2,'cof');
      end
      fseek(fid,(X_total-X_count)*Y_total*2,'cof');
   end
end