2017-04-10 15 views
2

Ich habe eine Daten (der Name der Daten ist Testdaten) im Arbeitsbereich 60x5 Doppel. Ich habe 60 verschiedene Messungen und 5 Proben. Um in R zu berechnen, muss ich sie in einer Reihenfolge speichern, in der mein R-Code sie verwenden kann. Was ich tun muss, ist, alle 5 Zeilen jeder Spalte in eine Zeile zu transponieren und die nächsten transponierten Zeilen unter diesen 5 Werten hinzuzufügen. Sie können ein Bild von dem finden, was ich machen möchte. Wie im Bild zu sehen ist, sollte das schwarze Rechteck in die Spalte transponiert werden, dann wird das rote Rechteck transponiert und unter den Spalten hinzugefügt, die bereits für den ersten Schritt verwendet wurden. Ich muss dies 60 mal tun, am Ende sollte es 300x1 double sein. Ich hoffe, jemand kann mir helfen, dieses Problem zu lösen. Danke für deine Zeit und Hilfe.Wie werden Zeilen in MATLAB in einer bestimmten Reihenfolge transponiert?

Mit besten Grüßen,

enter image description here

Antwort

3

sehen, ob dies ist, was Sie wollen:

A = magic(3); % example matrix 
B = A.'; % transpose 
B = B(:); % linearize in column-major order 

Dies verwandelt

A = 
    8  1  6 
    3  5  7 
    4  9  2 

in

B = 
    8 
    1 
    6 
    3 
    5 
    7 
    4 
    9 
    2 
+1

funktioniert perfekt @LuisMendo, das ist genau das, was ich suchte. Vielen Dank für Ihre Hilfe und Zeit. +1 –

0

Reshape wird genau das tun, was Sie suchen:

A = magic(5); % Example matrix 
B = reshape(A',[],1); % Reshapes the matrix to one vector. 
+1

Sie müssen "A" vor "Umformen" transponieren (siehe meine Antwort) –

+0

Ja, danke, dass Sie den Tippfehler gefunden haben! –

+0

Nochmals vielen Dank, beide Versionen funktionieren gut. Ich habe den Unterschied nicht verstanden, aber die gleichen Ergebnisse erzielt. –

Verwandte Themen