File Exchange

image thumbnail

Pack/Unpack Logicals

version 1.0 (2.82 KB) by

Compress large logical variables to one bit per element, instead of the usual 8.



View License

MATLAB (6.5 at least) stores logical variables in memory as 8 bits per element, even though only one bit is required. This means a 512x512x100 logical mask takes up 25 MB of memory. By compressing this mask the same amount of data takes only 3MB.

A limitation is that compressed logicals are stored in a struct array, and cannot be operated on in a meaningful way without unpacking them. I use this compression to store many large masks in memory, and then I unpack them when I am ready to use them.

Comments and Ratings (2)

Hoang Hanh Luu Nguyen


Ryan White

Exactly what I needed. There is some overhead -- I was compressing a very large number of smaller logical arrays. Each one was 85 x85 and went from 7225 -> 1358 bytes.

MATLAB Release
MATLAB 6.5 (R13)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video