How does MATLAB run load, importdata, matfile functions

3 vues (au cours des 30 derniers jours)
Shih-Hsuan Yuan
Shih-Hsuan Yuan le 25 Jan 2017
Commenté : Shih-Hsuan Yuan le 25 Jan 2017
Hi,
I am wondering if anyone knows the actual process MATLAB run function load and matfile. I have a .mat file with a single variable that consists of a column of cells.
I try loading with both function
load(full_path)
and
temp_file = matfile(full_path);
data = temp_file.data;
I am using MATLAB R2015a and on my machine, the second method with matfile usually out performs the first one (load faster). It seems weird to me. I try opening both function and look at their code, but unfortunately they are built-in functions. I am wondering if anyone knows what is the reason behind this. Thanks

Réponse acceptée

Jan
Jan le 25 Jan 2017
Depending on the format of the MAT file (see e.g. Level-5-mat-format, mat-file-versions) different methods are applied to import the file. E.g. the HDF5 format of 7.3 MAT-files can be accessed by other tools also and not only by built-in functions.
Your 2nd approach, which catches the output in a variable migth be faster, because the dynamic create of variables by load without output argument impedes the efficient processing.
  1 commentaire
Shih-Hsuan Yuan
Shih-Hsuan Yuan le 25 Jan 2017
Thanks, these look like useful resource that I can look into. For first approach, I've also tried
result_data = load(full_path);
data = result_data.data;
No major difference in speed compares to simply load(full_path).

Connectez-vous pour commenter.

Plus de réponses (1)

Steven Lord
Steven Lord le 25 Jan 2017
How many variables are in your MAT-file? How large and/or complicated are the variables NOT named data? Your first code that calls load cares about the answers to those two questions, because it needs to load ALL those variables into the workspace. I'm not certain how much (or if) the second code cares what else is in the MAT-file.
If you wanted a more apples-to-apples comparison, call load and indicate you want to read just the variable named data into memory using the variables input argument.
  1 commentaire
Shih-Hsuan Yuan
Shih-Hsuan Yuan le 25 Jan 2017
1 variable (Nx1 cell) in the .mat file. I have tried loading (load(path,'data')) with indication of the variable name, there's no major difference, since I'm guessing there's only 1 variable in the .mat file

Connectez-vous pour commenter.

Catégories

En savoir plus sur Workspace Variables and MAT Files dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by