2016-04-27 4 views
1

für eine 5 x 10 Matrix, wollte ich die Matrix so stapeln, dass jede Spalte der ursprünglichen Matrix an die Zeilen angehängt wird, um schließlich zu enden eine 50 x 1-Matrix. Grundsätzlich stapeln Sie die Spalten in 1 Spalte. Vielen Dank. HierStack anxn Matrix von einer^2 x 1 Spaltenmatrix

ist der Start der Matrix:

RR = randi(5,5,10); 
+2

Entweder 'RR = randi (5, 50, 1);' oder, mit Ihrem Code, 'RRS = RR (:);'. – beaker

Antwort

3

Für allgemeine Umformungsoperationen verwenden reshape, zum Beispiel:

reshape(RR,[],1) 

Dies das Array umformt RR in ein Array mit einer unbestimmten Anzahl von Reihen (die []) und 1 Spalte, wie Sie brauchen.


Ihr spezieller Fall kann die durch @beaker in den Kommentaren erwähnte Verknüpfung verwendet

RR(:) 

Diese Syntax entspricht den reshape Befehl oben und einfach auflistet, in einer Spalte, alle Elemente der Array.

Diese beiden Beispiele nutzen die Tatsache aus, dass Matlab spaltenorientiertes Speichern und Indizieren verwendet. Wenn Sie aus irgendeinem Grund Zeilen anstelle von Spalten verketten müssen, müssen Sie das Array RR zuerst transponieren. Zum Beispiel:

reshape(RR', 1, []) %This concatenates the rows of RR into a single row. Note the transpose operator.