Generate a large power set in batches?

1 回表示 (過去 30 日間)
Peta
Peta 2016 年 2 月 17 日
コメント済み: Peta 2016 年 2 月 18 日
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?

採用された回答

Walter Roberson
Walter Roberson 2016 年 2 月 18 日
編集済み: Walter Roberson 2016 年 2 月 18 日
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
  1 件のコメント
Peta
Peta 2016 年 2 月 18 日
Works nice, thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Coder についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by