如何在不加载的情况下在MATLAB中检查MAT文件的内容?

Elp*_*rto 13 matlab struct mat-file

我在MAT文件中有一个大型结构.我想检查结构中是否存在特定字段而不加载MAT文件,因为内容非常大,我想最小化内存使用.

这是可能的,还是我必须先加载它,如下例所示?:

load('test.mat');             %# Load the MAT-file
tf = isfield(s,'fieldname');  %# Check if structure s has field 'fieldname'
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 23

要检查MAT文件的内容而不加载它,请使用:

vars = whos('-file','test.mat')
ismember('fieldname', {vars.name})
Run Code Online (Sandbox Code Playgroud)

  • @Jonas:否则,如果用户真的关心内存使用,我们可以简单地将字段名称与实际MAT文件一起写入单独的文本文件,然后在加载实际结构数据之前根据需要加载并检查文本文件 (2认同)

Jon*_*nas 6

据我所知,您必须加载该文件,以便能够检查保存的结构是否包含特定字段.

但是,如果使用'-struct'-option保存.mat文件,则会将字段拆分为.mat文件中的单独变量.您可以通过调用重新创建结构

myStructure = load('test.mat');
Run Code Online (Sandbox Code Playgroud)

以这种方式保存还允许您使用@Amro的方法(比我之前建议的更清晰)来测试字段(变量)是否存在.