How can I load part of a .mat file that is too big in memory for my machine?

StackOverflow https://stackoverflow.com/questions/17518940

  •  02-06-2022
  •  | 
  •  

سؤال

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:

  1. How can I access the variables names of the mat file without loading it?
  2. How can I load only one of them to the workspace?

Thanks!

هل كانت مفيدة؟

المحلول

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)

نصائح أخرى

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top