Wie werden Binärmatrizen mit allen Kombinationen gefüllt?
Ich möchte 2 ^ n Matrizen mit allen Kombinationen von 0 und 1 haben. Zum Beispiel für n = 6 (n = # Zeilen x # Spalten)array{1}=[0 0 0; 0 0 0]
,array{2}=[0 0 0; 0 0 1]
...array{64}=[1 1 1;1 1 1]
. Ich benutze MATLAB und bin darauf gestoßencombn.m
(M = COMBN (V, N) liefert alle Kombinationen von N Elementen der Elemente im Vektor V. M hat die Größe (Länge (V). ^ N) -by-N.),dec2bin()
aber ich kann es nicht ganz richtig machen. Eine andere Idee von mir war es, eine große Matrix zu erstellen und diese dann in 2 ^ n Matrizen aufzuteilen. Zum Beispiel habe ich dies für n = 6 (2 x 3) getanM=combn([0 1],3)
was mir gibt:
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
Dann benutze diesM
um eine größere Matrix wie diese zu erstellenM2=combn(M,2)
Dies führt jedoch zu falschen Ergebnissen. Wenn ich jedoch M-Reihe wie folgt verketten:
M=combn([000;010;100;001;110;011;101;111],2)'
Ich komme etwas näher an das, was ich erwarte, d. H
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
Wo kann ich jede Spalte und konvertieren Sie es separat in 64 Matrizen. So würde zum Beispiel Spalte 1 konvertiert werden[0;0]
zu[0 0 0;0 0 0]
etc. Ich glaube jedoch, dass es ein viel einfacheres Problem ist, das elegant in kürzerer Zeit gelöst werden kann.