All possible combination based on 2^n

8 次查看(过去 30 天)
I want to create a matrix containing all possible combination. Example of this is shown below. The size of the matrix depends on the number of variable n and the total of combination should follow the . The example below is valid for and, hence, the total number of rows is 8. The value of each element is 0 and 1.
How to create this matrix automatically depending on the number of variable n?

采纳的回答

Stephen23
Stephen23 2021-5-14
编辑:Stephen23 2021-5-14
n = 3;
m = dec2bin(0:pow2(n)-1)-'0' % limited precision
m = 8×3
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
Or
C = cell(1,n);
[C{:}] = ndgrid(0:1);
C = cellfun(@(a)a(:),C,'uni',0);
M = [C{:}]
M = 8×3
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1

更多回答(3 个)

Dyuman Joshi
Dyuman Joshi 2021-5-14
y = flipud(dec2bin(0:2^n-1,n))-'0' %method 1
y = dec2bin(2^n-1:-1:0,n)-'0' %method 2
Choose any of the methods you wish, both give the same result.
P.S - There is a similar question in Cody as well.
  2 个评论
BeeTiaw
BeeTiaw 2021-5-14
编辑:BeeTiaw 2021-5-14
I have another question. Quite similar but the output will be slightly different.
https://uk.mathworks.com/matlabcentral/answers/829783-all-possible-combination-based-on-2-n-but-with-1-and-1

请先登录,再进行评论。


Stephan
Stephan 2021-5-14
n = 3
n = 3
ff2n(n)
ans = 8×3
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
  1 个评论
Stephen23
Stephen23 2021-5-14
编辑:Stephen23 2021-5-14
Note: requires the Statistics and Machine Learning Toolbox.

请先登录,再进行评论。


Bjorn Gustavsson
Bjorn Gustavsson 2021-5-14
You could use dec2bin:
allpossibles = dec2bin(0:(2^n-1));
You'll have to extract the indices from the columns but that should be "not hard". There's more than likely many prettier solutions, for example have a look on the file exchange for nextperm (by Jos) and next-combination-permutation (by Matt-Fig).
HTH

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by