splitvar/splicevar

version 1.1.0.0 (1.87 KB) by Jeremy
Splits a 1 x N array into N separate 1 x 1 variables. Improves SAVE time drastically.

291 Downloads

Updated 19 Apr 2011

View License

Saving large (>2 GB) variables using the '-v7.3' flag is terribly slow, especially if the variable is not a simple matrix. If the large variable that is holding you up is a 1-D array, you can use SPLITVAR to break it up into separate variables in the workspace. This could allow you to save the workspace without the dreaded '-v7.3' flag. After reloading the workspace, use SPLICEVAR to build it back into the original variable.

Example:
I have a ~7.5GB 1x22 array of structures.

>> whos
Name Size Bytes Class
data 1x22 7580671154 struct

after running SPLITVAR(data) my workspace contains:

>> whos
Name Size Bytes Class
data_1 1x1 558955428 struct
data_10 1x1 182980944 struct
data_11 1x1 204706714 struct
data_12 1x1 240433764 struct
data_13 1x1 242623570 struct
data_14 1x1 257212788 struct
data_15 1x1 295351300 struct
data_16 1x1 277538660 struct
data_17 1x1 256249924 struct
data_18 1x1 218259258 struct
data_19 1x1 255908802 struct
data_2 1x1 469168036 struct
data_20 1x1 475334632 struct
data_21 1x1 469577114 struct
data_22 1x1 488044446 struct
data_3 1x1 499091734 struct
data_4 1x1 455919532 struct
data_5 1x1 481254514 struct
data_6 1x1 427976576 struct
data_7 1x1 445993342 struct
data_8 1x1 190239504 struct
data_9 1x1 187854604 struct

To return to the original variable, run:
SPLICEVAR('data').

Saving the original workspace with the '-v7.3' flag for me took a couple of hours. Using SPLITVAR takes less than a second, and using SAVE with no '-v7.3' flag takes a few minutes. Loading the workspace takes about a minute, and running SPLICEVAR to get the original variable back takes less than a second.

It wouldn't take much to modify to allow it to work with more than 1-D arrays!

Cite As

Jeremy (2022). splitvar/splicevar (https://www.mathworks.com/matlabcentral/fileexchange/31058-splitvar-splicevar), MATLAB Central File Exchange. Retrieved .

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

Community Treasure Hunt

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

Start Hunting!