Increase execution speed of saving using matfile

15 visualizzazioni (ultimi 30 giorni)
I want to continously save data (in appdesigner if that is relevant), therefore I create a matfile object on startup and then append data using a timer:
"Main"
app.SavingObject = matfile(app.FileName,'Writable',true);
And in a timer:
app.SavingObject.Data(app.sizeMyVar(1)+1:app.sizeMyVar(1)+size(NewPoints,1),1:app.sizeMyVar(2)) = NewPoints;
This will append my Data in the correct way.
What bothers me, if profiling this, you will see, that 40% of the time is spent internally using "whos". Sure this can be adjusted by the amount of how much data is written per call (I write ~60k Values per call), but it somehow feels like a waste of time and the amount of data per call is kind of fixed in my setup.
Is there a way to increase the wrtiting speed?
TimingMatFile.PNG

Risposta accettata

Jan
Jan il 27 Feb 2019
A MAT file can contain a set of variables and store the data in compressed form. Appending new data to an existing variable is expected to be slow. It would be much more efficient to use a binary file and export the data to the MAT file at the end of the process at once.

Più risposte (1)

Pritesh Parmar
Pritesh Parmar il 15 Apr 2025
Modificato: Pritesh Parmar il 17 Apr 2025
Hi Stefan,
I had the similar issue with MATLAB's "save -append" with updating variables with large dataset. Does the the following code work for you?: fastSaveUpdate - Efficiently update variables in MAT-file - File Exchange - MATLAB Central
Pritesh Parmar

Categorie

Scopri di più su Data Import and Analysis in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by