Increase execution speed of saving using matfile

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

 채택된 답변

Jan
Jan 2019년 2월 27일

0 개 추천

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.

추가 답변 (1개)

Pritesh Parmar
Pritesh Parmar 2025년 4월 15일
편집: Pritesh Parmar 2025년 4월 17일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

제품

릴리스

R2018b

질문:

2019년 2월 27일

편집:

2025년 4월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by