File Exchange

image thumbnail


version (3.53 KB) by Yair Altman
save/load data in a compressed zip file


Updated 29 Aug 2014

View License

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.

savezip(filepath, data)
savezip(filepath, 'variableName')
data = loadzip(filepath)

savezip('myData', magic(4)) %save data to in current folder
savezip('myData', 'myVar') %save myVar to in current folder
savezip('myData.gz', 'myVar') %save data to myData.gz in current folder
savezip('data\myData', magic(4)) %save data to .\data\
savezip('data\myData.gz', magic(4)) %save data to .\data\myData.gz

myData = loadzip('myData');
myData = loadzip('');
myData = loadzip('data\myData');
myData = loadzip('data\myData.gz');

Technical description:

This utility relies on the undocumented and unsupported serialization functionality, as described in . 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)

Cite As

Yair Altman (2020). savezip (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (2)


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.

Ji Tan

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?


MATLAB Release Compatibility
Created with R2014a
Compatible with any release
Platform Compatibility
Windows macOS Linux