Pack/Unpack Logicals
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.
Cite As
James Alaly (2024). Pack/Unpack Logicals (https://www.mathworks.com/matlabcentral/fileexchange/6586-pack-unpack-logicals), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- Mathematics and Optimization > Optimization Toolbox > Optimization Results > Solver Outputs and Iterative Display >
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.0.0.0 | Updated to store size of original logical vector/array in the packed data structure. Idea by Iram Weinstein. Also added a function isPackedLogical to test if a variable needs to be unpacked. |