¿Cómo llenar matrices binarias con todas las combinaciones?
Quiero tener 2 ^ n matrices con todas las combinaciones de 0 y 1 en ellas. Por ejemplo, para n = 6 (n = # filas x # columnas)array{1}=[0 0 0; 0 0 0]
,array{2}=[0 0 0; 0 0 1]
...array{64}=[1 1 1;1 1 1]
. Estoy usando MATLAB y me encontré concombn.m
(M = COMBN (V, N) devuelve todas las combinaciones de N elementos de los elementos en el vector V. M tiene el tamaño (longitud (V). ^ N) -por-N.),dec2bin()
Pero no puedo hacerlo bien. Otra idea mía era crear una matriz grande y luego dividirla en 2 ^ n matrices. Por ejemplo, para n = 6 (2 x 3), hice estoM=combn([0 1],3)
lo que me da:
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
Entonces, usa estoM
para crear una matriz más grande como estaM2=combn(M,2)
, pero esto produce resultados incorrectos. Sin embargo, si concateno la fila M de esta manera:
M=combn([000;010;100;001;110;011;101;111],2)'
Tengo algo más cerca de lo que espero, es decir
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
donde puedo obtener cada columna y convertirla por separado en 64 matrices. Entonces, por ejemplo, la columna 1 se convertiría de[0;0]
a[0 0 0;0 0 0]
Sin embargo, creo que es un problema mucho más fácil que puede resolverse en menos tiempo, con elegancia.