问题
I have a big .mat file that I want to process, but it is too big to fit in a single load. I thought to load it in parts, each time to access just the important parameters. So I have practically two questions:
- How can I access the variables names of the mat file without loading it?
- How can I load only one of them to the workspace?
Thanks!
回答1:
you can see the list of variables using:
vars = whos('-file','name.mat');
and then just load the variable you want, say the first one on the list, by:
load('name.mat', vars(1).name)
回答2:
As well as loading individual variables from the .mat file as suggested by @natan, in recent versions of MATLAB you can use a matfile
object to load in only parts of an individual variable.
So for example, you can say:
myFile = matfile('path\to\the\mat\file');
loadedData = myfile.myVarName(100:200, 500:600);
and you will load in only a portion of the variable myVarName
from the file myFile
.
Edit:
The matfile
object also has methods size
, who
and whos
, so that you can determine the names and sizes of the variables that the file contains before you attempt to load bits in.
来源:https://stackoverflow.com/questions/17518940/how-can-i-load-part-of-a-mat-file-that-is-too-big-in-memory-for-my-machine