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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage