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.
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.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.