How does MATLAB run load, importdata, matfile functions

3 Ansichten (letzte 30 Tage)
Shih-Hsuan Yuan
Shih-Hsuan Yuan am 25 Jan. 2017
Kommentiert: Shih-Hsuan Yuan am 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

Akzeptierte Antwort

Jan
Jan am 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 Kommentar
Shih-Hsuan Yuan
Shih-Hsuan Yuan am 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).

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Steven Lord
Steven Lord am 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 Kommentar
Shih-Hsuan Yuan
Shih-Hsuan Yuan am 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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Workspace Variables and MAT Files finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by