2016-05-17 9 views
0

Ich habe A ist eine 8-by-8 Matrix. Ich möchte die 6 letzten Zeilen nehmen und sie neben die erste und zweite Zeile setzen, so dass die Matrix A2 -by- 32 wird.Wie man eine 8-mal-8-Matrix zu 2-mal-32-Matrix in Matlab

EDIT:

A = 

12,6872713121256 12,0602414786595 10,3270660536998 7,80915144314411 10,0045468077317 9,60906828665612 8,31320998311920 6,36510295973004 
12,0602414786595 12,6872713121256 12,0602414786595 10,3270660536998 9,38969514490848 10,0045468077317 9,60906828665612 8,31320998311921 
10,3270660536998 12,0602414786595 12,6872713121256 12,0602414786595 7,92932345092466 9,38969514490848 10,0045468077317 9,60906828665611 
7,80915144314411 10,3270660536998 12,0602414786595 12,6872713121256 5,89043977575553 7,92932345092466 9,38969514490847 10,0045468077317 
10,0045468077317 9,38969514490848 7,92932345092466 5,89043977575553 7,90694573827892 7,48897349750382 6,39213878381770 4,80849938907536 
9,60906828665612 10,0045468077317 9,38969514490848 7,92932345092466 7,48897349750382 7,90694573827892 7,48897349750382 6,39213878381770 
8,31320998311920 9,60906828665612 10,0045468077317 9,38969514490847 6,39213878381770 7,48897349750382 7,90694573827892 7,48897349750382 
6,36510295973004 8,31320998311921 9,60906828665611 10,0045468077317 4,80849938907536 6,39213878381770 7,48897349750382 7,90694573827892 

Dans Lösung gab nicht das, was ich wollte, wenn ich diesen Code setzen: Ry=reshape(A.',[],2).';

ich meine erste Reihe halten will und zweite Reihe in dort Orten, ich möchte nur zu Verschieben Sie die anderen Zeilen (Zeilen von 3 bis 8) und legen Sie sie neben Zeile 1 und Zeile 2, so dass Zeile 3 neben Zeile 1 ist .. Zeile 4 ist neben Zeile 2 .. Zeile 5 ist neben Zeile 1 und 3 ... Reihe 6 ist neben Reihe 2 und 4 .. und so weiter ... Danke

+3

Suche „wie eine Matrix in Matlab neu zu gestalten“ – patrik

+0

Im Hinblick auf die Kommentare unterhalb der Antwort von @ Dan. Können Sie Beispiele für beide Matrizen angeben? – Crowley

+0

ja man werde ich sie posten – Joe

Antwort

1

Verwenden Sie reshape nach der Transponierung (notwendig, weil MATLAB column-major Indizierung verwendet) zu einer 3D-Matrix. Dann die Matrix permutiert die neue dritte Dimension mit dem zweiten zu tauschen und dann neu zu gestalten und umzusetzen zurück

reshape(permute(reshape(A.',8,2,[]),[1,3,2]),[],2).' 
+0

danke das funktioniert Ry = umformen (R. ', 2, []); ohne zu transponieren – Joe

+0

@Joe bist du sicher? Denn wenn ich darüber nachdenke, muss es wirklich umgestaltet werden (A., [], 2). '. Überprüfen Sie die tatsächlichen Zahlen, um sicherzustellen, dass sie dorthin gehen, wo sie benötigt werden. – Dan

+0

Ich habe es gerade in Matlab getan und es funktionierte als du siad aber ohne Transponieren .. wenn ich transponiere, bekomme ich 32 * 2 Matrix .. Einfach schreiben in Matlab 'A = rand (8); B = Umformen (A. ', 2, []).' ; 'JETZT DAS DIM VON B sehen .. danke – Joe

Verwandte Themen