Is it possible to save partial arrays without compression? matfile() forces compression during save.

1 Ansicht (letzte 30 Tage)
Hi, I would like to incrementally write arrays to a .mat file without compression. I know how to save files without compression using save(...,'-nocompression'). That won't work for me, because I often don't have the RAM to hold the variable in memory before saving. I also know how to save files incrementally with matfile(), but that won't work here because it forces compression. I've tried tricking matfile() into not using compression by initializing the array with an uncompressed variable either with save() or with h5create(), but neither worked. Perhaps I could use h5write(), but it seems so low level--it doesn't support many data types such as logical arrays and char arrays. I could probably write my own class to do this, but it is a bigger job. Is there a better way to write partial arrays to .mat or is there a better file type all together? Thanks for your advice.
You might ask about my application and why I need this feature: I work with large files (50-500 GB) that do not benefit much from compression. With a modern nvme SSD, large portions of uncompressed data load in just a few seconds, but compressed data takes several minutes to load due to singlecore CPU bottlenecks. If multiple cores were used, then compression might be viable.

Akzeptierte Antwort

Jan
Jan am 24 Aug. 2018
What about using a binary file together with memmapfile?
  1 Kommentar
Thomas Richner
Thomas Richner am 24 Aug. 2018
Bearbeitet: Thomas Richner am 24 Aug. 2018
Thank you Jan! Count me as a Jan fan. I didn't know about memmapfile. With a little work that should do nicely.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Large Files and Big Data finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by