如何为我的机器加载内存太大的.mat文件的一部分?

8 matlab mat-file

我有一个我想要处理的大.mat文件,但是它太大而不适合单个加载.我想加载它的部分,每次只访问重要的参数.所以我几乎有两个问题:

  1. 如何在不加载的情况下访问mat文件的变量名称?
  2. 如何只将其中一个加载到工作区?

谢谢!

bla*_*bla 8

您可以使用以下命令查看变量列表:

vars = whos('-file','name.mat');
Run Code Online (Sandbox Code Playgroud)

然后只需加载你想要的变量,比如列表中的第一个变量:

load('name.mat', vars(1).name)
Run Code Online (Sandbox Code Playgroud)


Sam*_*rts 7

除了按照@natan的建议从.mat文件加载单个变量之外,在最近的MATLAB版本中,您可以使用一个matfile对象仅加载单个变量的一部分.

例如,您可以说:

myFile = matfile('path\to\the\mat\file');
loadedData = myfile.myVarName(100:200, 500:600);
Run Code Online (Sandbox Code Playgroud)

并且您将仅加载myVarName文件中变量的一部分myFile.


编辑:

matfile对象也有方法size,who并且whos,这样就可以判断出文件中包含您尝试加载位前的变量的名称和大小.

  • 应该注意的是,`matfile`只支持MAT-file v7.3(基于HDF5)进行部分加载,否则它会回退到加载整个变量. (6认同)