MATLAB: Is there a way to find if a variable exists inside a MAT file

checkexistfileloadmatMATLABreadvariable

Is there a way to find if a variable exists inside a MAT file? I have saved several MAT files and in a different script I want to find out if those MAT files have a certain variable in them and if they do I want to load them.

Best Answer

This can be done by specifying additional arguments to the "load" command. MATLAB will search for each additional string argument as a variable name within the MAT files specified in the first argument. If it does not find a variable of that name, it will throw a warning. If it does find one, it will load the variable. Here is a simple example to read all the MAT files in a given directory and load a variable named 'myVar' if it exists.
myFiles = dir('*.mat');
for i=1:length(myFiles)
    clear myVar;
    load(myFiles(i).name,'myVar')
    if exist('myVar','var')
        disp(['myVar = ' num2str(myVar)]); %display the value of myVar
    else
        %do something if it doesn't load.
    end
end
In order to achieve this without using the 'load' command, use the 'who' function with '-file' argument.
https://www.mathworks.com/help/matlab/ref/who.html
 
variableInfo = who('-file', 'census.mat');
ismember('pop', variableInfo) % returns true
ismember('doesNotExist', variableInfo) % returns false