Say I have a .mat file with several instances of the same structure, each in a different variable name.
I want to process each instance found in a file (which I find using whos('-file' ...
). I was hoping that load
would let me specify the destination name for a variable so that I didn't have to worry about collisions (and so that I didn't have to write self-modifying code a la eval
).
The brute force way to do this appears to be creating a helper function that, using variables with names that hopefully don't conflict with the .mat contents, does something like:
whos
on the file to get the contained names.eval
to assign the loaded structure into, say, a cell array (where one column of the array contains the .mat file's structure names and a corresponding column with the actual contents of each structure from the .mat file).Is there no more elegant way to accomplish the same thing?
If filename is a MAT-file, then load(filename) loads variables in the MAT-file into the MATLAB® workspace. If filename is an ASCII file, then load(filename) creates a double-precision array containing data from the file.
To save a subset of your workspace variables to a MAT-file, select the variables in the Workspace browser, right-click, and then select Save As. You also can drag the selected variables from the Workspace browser to the Current Folder browser.
mat . To save to another directory, use the full pathname for the filename . If filename is the special string stdio , the save command sends the data as standard output. save filename var1 var2 ...
save( filename ) saves all variables from the current workspace in a MATLAB® formatted binary file (MAT-file) called filename . If filename exists, save overwrites the file. save( filename , variables ) saves only the variables or fields of a structure array specified by variables .
Of course you can! Just use load
with an output argument.
x = 1;
save foo;
ls = load('foo.mat');
ls.x
you can load
the data in a MAT file into a structure
ws = load('matlab.mat');
the fields of the structure ws
will be the variables in the MAT file. You can then even have a cell array of structures
ws{1}=load('savedWorkSpace_1.mat');
ws{2}=load('savedWorkSpace_2.mat');
Example
>> x = 1;
>> save ws_1;
>> x = 2;
>> y = 1;
>> save ws_2
>> clear
>> ws{1} = load('ws_1.mat')
>> ws{2} = load('ws_2.mat')
>> ws{1}.x
x = 1
>> ws{2}.x
x = 2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With