savezip accepts a file name/path and variable data or name, and stores the data in compressed zip or gzip format in the specified file. If the specified filepath does not include an extension, then '.zip' will be used. The data can be in any Matlab data format.
The data can later be loaded back into Matlab using the corresponding loadzip function, which is included in this submission.
The main benefit: saving and loading data can be faster than Matlab's builtin save and load functions in some cases.
data = loadzip(filepath)
savezip('myData', magic(4)) %save data to myData.zip in current folder
savezip('myData', 'myVar') %save myVar to myData.zip in current folder
savezip('myData.gz', 'myVar') %save data to myData.gz in current folder
savezip('data\myData', magic(4)) %save data to .\data\myData.zip
savezip('data\myData.gz', magic(4)) %save data to .\data\myData.gz
myData = loadzip('myData');
myData = loadzip('myData.zip');
myData = loadzip('data\myData');
myData = loadzip('data\myData.gz');
This utility relies on the undocumented and unsupported serialization functionality, as described in http://undocumentedmatlab.com/blog/serializing-deserializing-matlab-data . It works on all the recent Matlab releases, but might stop working in any future Matlab release without prior notice. Use at your own risk!
Bugs and suggestions:
Please send to Yair Altman (altmany at gmail dot com)
Yair Altman (2020). savezip (https://www.mathworks.com/matlabcentral/fileexchange/47698-savezip), MATLAB Central File Exchange. Retrieved .
On my Windows 10 machine running R2018b, using savezip and loadzip on a large variable (800x800x30) was slower than using the Matlab native save and load commands (as Yair warns it might be), so comparing speeds is worthwhile.
Hi I am using this read .gz file, it failed for the last step of getArrayFromByteStream: Unable to read data stream because the data contains a bad version or endian-key. The data up to that time point looks perfectly normal, it is like 3million rows of unit8. Apparently there is no way to debug getArrayFromByteStream. Any suggestions?