Generate a large power set in batches?
3 views (last 30 days)
Show older comments
Say I want to generate the power set of a number and store as logical combinations using this formula for example:
idx = dec2bin(0:2^n-1,n)=='1';
But the n value I want to use is big enough that the resulting idx variable becomes too large to store in memory or work with. Is there any way that I can generate the power set batch-wise in a loop so I only have to store parts of it at a time but in the end I will have worked my way though all of it?
So for example, is there any way I can generate the first 100 values of the set and then start regenerating at 101 and go to 200 etc?
0 Comments
Accepted Answer
Walter Roberson
on 18 Feb 2016
Edited: Walter Roberson
on 18 Feb 2016
n = 14; %for example
batch_size = 100;
maxidx = 2^n - 1;
for k = 0 : ceil(maxidx/batch_size)
high = min(maxidx, (k+1)*batch_size - 1);
idx = dec2bin(k * batch_size : high, n) == '1';
...
end
More Answers (0)
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!