MATLAB: Is there a load if statement or similar in matlab, way to save workspace variable’s seperate mat files

matMATLAB

I want to only load a mat file if it isn't loaded. Is there a way to tell if it is loaded?
Is there a way to store every workspace variable as its own mat file by chance?

Best Answer

This creates a list of currently defined variables:
List = who;
Then omit ans:
List(strcmp(List, 'ans')) = [];
And save the others:
for k = 1:length(List)
save(List{k});
end
Then this bunch of files can be loaded without overwriting existing variables:
matList = dir('*.mat');
List = who;
for k = 1:length(matList)
name = matList(k).name;
if ~any(strcmp(name, List))
load(name);
end
end
But I would avoid this consequently: 1. load without catching the input to a variable is prone to errors. 2. The debugging of your program will be impeded by this method, because it conceals the source of the values.