Como preencher matrizes binárias com todas as combinações?
Eu quero ter 2 ^ n matrizes com todas as combinações de 0 e 1 nelas. Por exemplo, para n = 6 (n = # linhas x # colunas)array{1}=[0 0 0; 0 0 0]
,array{2}=[0 0 0; 0 0 1]
...array{64}=[1 1 1;1 1 1]
. Estou usando o MATLAB e me deparei comcombn.m
(M = COMBN (V, N) retorna todas as combinações de N elementos dos elementos no vetor V. M tem o tamanho (comprimento (V). ^ N) -por-N.),dec2bin()
mas não consigo acertar. Outra idéia minha foi criar uma matriz grande e depois dividi-la em 2 ^ n matrizes. Por exemplo, para n = 6 (2 x 3), eu fiz issoM=combn([0 1],3)
o que me dá:
M =
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Então, use istoM
para criar uma matriz maior como estaM2=combn(M,2)
, mas isso produz os resultados errados. No entanto, se eu concatenar a linha M assim:
M=combn([000;010;100;001;110;011;101;111],2)'
Tenho algo mais próximo do que espero, ou seja
M =
Columns 1 through 21
0 0 0 0 0 0 0 0 10 10 10 10 10 10 10 10 100 100 100 100 100
0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110
Columns 22 through 42
100 100 100 1 1 1 1 1 1 1 1 110 110 110 110 110 110 110 110 11 11
11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10
Columns 43 through 63
11 11 11 11 11 11 101 101 101 101 101 101 101 101 111 111 111 111 111 111 111
100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101
Column 64
111
111
onde posso obter cada coluna e convertê-lo separadamente em 64 matrizes. Assim, por exemplo, a coluna 1 seria convertida de[0;0]
para[0 0 0;0 0 0]
etc. No entanto, acredito que é um problema muito mais fácil, que pode ser resolvido em menos tempo, com elegância.