Save MAT File Bigger than 2GB

Hello,
I`m a 2016B user. This version complains about my synthetic data storage and says that
For variables larger than 2GB use MAT-file version 7.3 or later
I cannot obtain higher version. Any idea on how to store big data?
Thanks in advance

2 Commenti

Adam
Adam il 7 Feb 2018
You would probably be better splitting your data into chunks if that is possible. Saving large files to v7.3 can be very bad in terms of performance.
Jan
Jan il 7 Feb 2018
The message is clear already: All you have to do is to append the -v7.3 flag to your save command (see Kai's answer) or to set this as default in the preferences.

Accedi per commentare.

 Risposta accettata

Kai Domhardt
Kai Domhardt il 7 Feb 2018
Take from the reference and tested with Matlab R2016b:
save('myFile.mat', 'Variablename', '-v7.3')
will save your variable ( > 2GB ), provided you are running on an 64-bit system

13 Commenti

Jan
Jan il 7 Feb 2018
Matlab 2016b runs on 64 bit systems only, so this is the valid solution already. +1
I just gave it a try, but it seems to be endless procedure. It`s been more than 15 minutes already. It surely must depend on the size of my data.
Thanks! It works.
Jan
Jan il 7 Feb 2018
@Erdem: in the -v7.3 format the data are compressed, which takes time. See the '-nocompression' flag in the current Matlab version.
Adam
Adam il 7 Feb 2018
Modificato: Adam il 8 Feb 2018
From my experience v7.3 takes a very long time to save and, for the data I saved, its 'compression' resulted in a file many orders of magnitude bigger than when using v7 (which I was able to use as my data was not 2 GB).
If you are expecting to use parts of the data rather than all of it in future then loading and saving the whole thing in one block every time will be woeful.
Indeed, it took considerably long. But on the other hand, I really need to use whole data.
then how i can load that data ?
I just tested this with reading and writing plain binary movies 512x512x4000 uint16 data, as opposed to reading and writing in matlab's v7 format as as single variable (save entire movie as an array of size (1, 512x512x4000). Writing took 5x longer than fwrite same array. Loading was 2x slower than fread, and at least twice as much RAM was needed.
jean vimal
jean vimal il 29 Lug 2020
It works perfectly
Tan Nguyen
Tan Nguyen il 14 Dic 2020
Thank you so much,
Thank you so much
Imanol
Imanol il 10 Gen 2024
Thank you so much
Julia
Julia il 29 Ott 2024
I am having the same issue and am running MATLAB R2024a on a 64 bit PC. The .mat file I have is output from Dymola (not originally made in MATLAB) and contains five small variables and one large variable (2-3GB). It is not v7.3, but I can't see what version it is. The solution above seems like it saves the mat file to the 7.3 version if it has been successfully loaded into MATLAB, but I can't load my large variable into MATLAB in the first place, even with matfile() which only seems to accept v7.3. Thus when I try to save it, it erases the large variable completely. Do you have any insight into how to load the data into MATLAB considering this?

Accedi per commentare.

Più risposte (2)

Steven Lord
Steven Lord il 7 Feb 2018

0 voti

Open the documentation for the save function using doc save. In order to save your data to a MAT-file with version 7.3 or later, specify the '-v7.3' flag as the version input argument. The "Save Variables to Version 7.3 MAT-File" example on that page shows the exact syntax.
Stefanie Schwarz
Stefanie Schwarz il 9 Set 2025

0 voti

There is also a MATLAB preference that you can set:
  • In R2024b and earlier: Open Preferences > General > MAT-Files and then select "MATLAB Version 7.3 or later" as the default "MAT-file save format".
  • In R2025a and later: Open Settings > General > MAT and FIG Files and then select "MATLAB R2006b (Version 7.3) or later" as the default "MAT and FIG files save format".

Community Treasure Hunt

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

Start Hunting!

Translated by