我在MAT文件中有一个大的结构。我想检查结构中是否存在特定的字段,而不是加载MAT文件,因为内容非常大,我想最大限度地减少内存使用。如何在不加载MATLAB的情况下检查MAT文件的内容?
这是可能的,或者我必须在下面的例子?:
load('test.mat'); %# Load the MAT-file
tf = isfield(s,'fieldname'); %# Check if structure s has field 'fieldname'
我在MAT文件中有一个大的结构。我想检查结构中是否存在特定的字段,而不是加载MAT文件,因为内容非常大,我想最大限度地减少内存使用。如何在不加载MATLAB的情况下检查MAT文件的内容?
这是可能的,或者我必须在下面的例子?:
load('test.mat'); %# Load the MAT-file
tf = isfield(s,'fieldname'); %# Check if structure s has field 'fieldname'
要检查MAT文件的内容,而无需加载它,使用:
vars = whos('-file','test.mat')
ismember('fieldname', {vars.name})
首先希望加载它,据我所知,你要加载的文件,以便能够检查是否保存结构包含特定的字段。
但是,如果使用'-struct'
-option保存.mat文件,它会将字段拆分为.mat文件中的单独变量。你可以通过调用
myStructure = load('test.mat');
保存重新结构这种方式,您还可以测试使用@Amro的做法(这是比我之前建议清洁很多)的字段(变量)是否存在。
确实为'test.mat'内部结构领域的工作? – Jonas 2010-10-26 18:43:52
@Jonas:上面的代码只检查变量名称。所以就像你在回答中提到的那样,用户应该在保存到MAT文件时使用SAVE的'-struct'选项将结构字段拆分成单独的变量。 – Amro 2010-10-26 18:48:37
@Jonas:否则,如果用户真的关心内存使用,我们可以简单地将字段名与实际的MAT文件一起写入单独的文本文件,然后在加载实际结构之前根据需要加载并检查文本文件数据 – Amro 2010-10-26 18:55:46