Increase execution speed of saving using matfile

조회 수: 13 (최근 30일)
Stefan
Stefan 2019년 2월 27일
편집: Pritesh Parmar 2025년 4월 17일
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일
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일
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

카테고리

Help CenterFile Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by