如何加载对我的机器来说内存太大的 .mat 文件的一部分?
Posted
技术标签:
【中文标题】如何加载对我的机器来说内存太大的 .mat 文件的一部分?【英文标题】:How can I load part of a .mat file that is too big in memory for my machine? 【发布时间】:2013-07-05 07:56:42 【问题描述】:我有一个要处理的大 .mat 文件,但它太大而无法加载一次。我想分部分加载它,每次只访问重要参数。所以我实际上有两个问题:
-
如何在不加载 mat 文件的情况下访问它的变量名称?
如何仅将其中一个加载到工作区?
谢谢!
【问题讨论】:
【参考方案1】:您可以使用以下命令查看变量列表:
vars = whos('-file','name.mat');
然后只加载你想要的变量,比如列表中的第一个,通过:
load('name.mat', vars(1).name)
【讨论】:
【参考方案2】:除了按照@natan 的建议从 .mat 文件中加载单个变量外,在最新版本的 MATLAB 中,您还可以使用 matfile
对象仅加载单个变量的部分内容。
例如,你可以说:
myFile = matfile('path\to\the\mat\file');
loadedData = myfile.myVarName(100:200, 500:600);
您将从文件myFile
中仅加载变量myVarName
的一部分。
编辑:
matfile
对象还具有 size
、who
和 whos
方法,因此您可以在尝试加载位之前确定文件包含的变量的名称和大小。
【讨论】:
需要注意的是matfile
只支持MAT-file v7.3(基于HDF5)进行部分加载,否则回退到加载整个变量。以上是关于如何加载对我的机器来说内存太大的 .mat 文件的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Matlab 中的 .mat 文件中仅加载一个单元格的条目?
如何在我的 numpy 数组中找到 NaN/infinity/对于 dtype('float64') 来说太大的值?