Code covered by the BSD License  

Highlights from
Fast function to save a matrix

Be the first to rate this file! 18 Downloads (last 30 days) File Size: 2.55 KB File ID: #24483

Fast function to save a matrix

by

 

write_matrix_bin(f,m) is a fats way to save a matrix of arbitrary size and dimension.

| Watch this File

File Information
Description

write_matrix_bin(f,m) saves the matrix "m" in a binary
file "f". write_matrix_bin is a lot faster than the built in function save(), and
takes up much less diskspace than the old "save -v6" which doesn't use compression.

write_matrix_bin also includes an option for compression with dzip
(http://www.mathworks.com/matlabcentral/fileexchange/8899). However, this
is only for convenience, and not because it's superior than the built in save()

Limitations: Think before you use write_matrix_bin() instead of save().
 * Since write_matrix_bin() as default saves values as float32 it will approximate your data.
 * you can't save a large matrix with compression turned on. java will urn of out heap space. This is a problem with dzip.

Here's a real life example (8000000 bytes = 7.6MB):

>> whos data_matrix
 Name Size Bytes Class Attributes

 data_matrix 100x100x100 8000000 double

%% Writing data to the disk

write_matrix_bin('write.compressed.test', data_matrix, 'compress', 1) => 0.509179 seconds. Filesize: 884K
save('write.save.test', 'data_matrix') => 0.582949 seconds. Filesize: 996K
write_matrix_bin('write.uncompressed.test', data_matrix) => 0.082440 seconds. Filesize: 3.9M
save -v6 'write.savev6.test' 'data_matrix' => 0.292839 seconds. Filesize: 7.7M

%% Reading data from the disk

read_matrix_bin('write.compressed.test', 'compress', 1) => 0.349878 seconds.
read_matrix_bin('write.uncompressed.test') => 0.103816 seconds.
load('write.save.test') % the compressed file => 0.088620 seconds.
load('write.savev6.test') % the uncompressed file => 0.061182 seconds.

MATLAB release MATLAB 7.8 (R2009a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.

Contact us