Verfasst am: 08.07.2014, 16:18
Titel: 2D-Matrix in 3D umwandeln
Hallo,
habe folgendes Problem:
ich habe Messwerte (3120x160) als 2D-Matrix vorliegen. Daraus möchte ich mir eine 3D-Matrix erstellen, mit den Dimensionen 120X160x26.
Meine Daten sind dabei folgendermaßen aufgebaut: pro Matrix in 3D also z.B. für (:,:,1) benötige ich die ersten 120 Zeilen meiner 2D-Matrix, für (:,:,2) die Zeilen 121 bis 240 usw.
Gibt es hierfür einen Matlab-Befehl? Reshape hilft mir ja nicht wirklich weiter.
Das ganze lässt sich zwar mit einer Schleife lösen, ist aber eher unschön. Vor allem kann es sein dass meine Datenmenge und somit die 3. Dimension der 3D-Matrix noch größer wird und das mit der Schleife so bestimmt nicht die schnellste Lösung bezüglich Rechenzeit ist.
das geht schon mit reshape. Das ist aber immer etwas Hirnschmalz. Das hier sollte funktionieren, ist aber noch nicht perfekt. Vermutlich geht es noch viel einfacher...
danke für den Ansatz. Ich denke dass ich ohne Schleife besser dran bin, da die Datenmenge in der Z-Dimension noch viel größer werden kann.
Was ich allerdings nicht kapiere sind die letzten 3 Zeilen Code von Nras. Was bringen mir diese? Wenn ich richtig liege sehen meine Daten nach dem permute-Befehl bereits so aus wie gewünscht.
D = reshape(1:3120*160,3120,160); % Daten erzeugen
R = reshape(D',160,120, 26); % In Form pressen
R = permute(R,[2,1,3]); % erste und zweite Dimension tauschen
Der Rest war bloß zur Kontrolle, dass auch alles passt. Ich hatte das einfach dringelassen, damit du dich auch davon überzeugen kannst, dass das passt.
Viele Grüße,
Nras.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.