问题
I have a large structure in a MAT-file. I want to check if a specific field is present in the structure without loading the MAT-file since the contents are very large and I want to minimize memory use.
Is this possible, or must I load it first like in the following example?:
load('test.mat'); %# Load the MAT-file
tf = isfield(s,'fieldname'); %# Check if structure s has field 'fieldname'
回答1:
To check the contents of a MAT file without loading it, use:
vars = whos('-file','test.mat')
ismember('fieldname', {vars.name})
回答2:
As far as I know, you have to load the file in order to be able to check if a saved structure contains a specific field.
However, if you save the .mat file with the '-struct'-option, it splits the fields into separate variables in the .mat file. You can recreate the structure by calling
myStructure = load('test.mat');
Saving this way also allows you to test for whether a field (variable) exists by using @Amro's approach (which is a lot cleaner than what I suggested before).
来源:https://stackoverflow.com/questions/4026690/how-can-i-check-the-contents-of-a-mat-file-in-matlab-without-loading-it