13

MAT ファイルに大きな構造があります。内容が非常に大きく、メモリ使用量を最小限に抑えたいため、MAT ファイルをロードせずに特定のフィールドが構造体に存在するかどうかを確認したいと考えています。

これは可能ですか、それとも次の例のように最初にロードする必要がありますか?:

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

2 に答える 2

23

MAT ファイルを読み込まずにコンテンツをチェックするには、以下を使用します。

vars = whos('-file','test.mat')
ismember('fieldname', {vars.name})
于 2010-10-26T18:32:11.327 に答える
6

私の知る限り、保存された構造に特定のフィールドが含まれているかどうかを確認するには、ファイルをロードする必要があります。

'-struct'ただし、 -optionを指定して .mat ファイルを保存すると、フィールドが .mat ファイル内の個別の変数に分割されます。呼び出して構造を再作成できます

myStructure = load('test.mat');

この方法で保存すると、 @Amroのアプローチを使用して、フィールド (変数) が存在するかどうかをテストすることもできます(これは、以前に提案したものよりもはるかにクリーンです)。

于 2010-10-26T18:25:12.140 に答える