Matlab:读取部分二进制数据

Matlab:读取部分二进制数据,matlab,binary,fread,Matlab,Binary,Fread,我有一个数据集(二进制文件),我只想读取保存到4D矩阵的X(和相应Y)数据的前半部分: for i = 1:vols for j = 1:cols XY(i,:,:,j) = fread(fid,[X Y],'int16'); end end 如何修改上述循环,使每个卷和列只读入第一个数据,例如10 X数据(和相应的Y) 谢谢您需要按照以下顺序对每个卷和列进行读取: 读取第一个输入X的Y部分,然后跳过此行的其余部分,读取第二个输入X的Y部分,以此类推 在读取请

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

 for i = 1:vols
    for j = 1:cols
       XY(i,:,:,j) = fread(fid,[X Y],'int16');
    end
 end
如何修改上述循环,使每个卷和列只读入第一个数据,例如10 X数据(和相应的Y)


谢谢

您需要按照以下顺序对每个卷和列进行读取: 读取第一个输入X的Y部分,然后跳过此行的其余部分,读取第二个输入X的Y部分,以此类推

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

要跳过矩阵的一部分,可以使用fseek函数

设X_计数和Y_计数是子矩阵的维数;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

您的文件是否只包含所需的部分数据(例如,矩阵的一部分)或需要读取文件的一部分?只需要读取部分二进制文件(以减少内存使用)