WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Operationen auf "hochdimensionalen" Matrizen

 

epsp
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 04.10.11
Wohnort: Lübeck
Version: ---
     Beitrag Verfasst am: 04.10.2011, 14:46     Titel: Operationen auf "hochdimensionalen" Matrizen
  Antworten mit Zitat      
Hallo Leute,

ich hätte mal eine Frage an euch wie man das gleich folgende Problem mit Matlab anzugehen hat.
Bitte lyncht mich nicht gleich, ich sehe gerade den Wald vor lauter Bäumen nicht glaube ich.

Problem:
Gegeben ist eine MxNx2xSxP Matrix.
Ich möchte jetzt über die P-Einträge iterieren, da diese den Rest der Matrix unter bestimmten Winkeln repräsentieren.
D.h. ich möchte für ein bestimmtes P immer alle MxNxS 2-Dimensionalen Vektoren mit einer 2x2 Drehmatrix multiplizieren (für ein konkretes P, immer mit der Selben).
Wenn möglich nicht mit über drei verschachtelte for-Schleifen, das wäre ja murks.
Da ich für jedes P alle diese Vektoren mit der selben Drehmatrix multiplizieren muss, war meine spontane Idee eben über die P zu iterieren.
In jedem Iterationsschritt eine MxNx2xSx2 "hochdimensionale" Drehmatrix zu erzeugen die eben für alle M,N,S eine 2x2 Drehmatrix enthält.
Meine Hoffnung war nun praktisch durch "elementweise Multiplikation" der Vektoren mit den Drehmatrizen wieder eine identisch geartete MxNx2xSxP Matrix mit den jeweils rotierten Vektoren zu erhalten.

Ich weiß, dass das ein unförmiges Datenkonstrukt ist, aber das hat alles seinen Sinn :P
Ich hoffe ihr versteht meine Problembeschreibung und könnt mir einen Tipp geben inwiefern das so machbar wäre, oder anders sinnvoller ginge.

MfG
epsp
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2011, 15:13     Titel:
  Antworten mit Zitat      
Hallo,

du bräuchtest hier meines Erachtens nur über die P iterieren.
Die Frage ist für mich viel mehr: wie soll das denn aufgespalten werden?
p = 1:2, dann p = 3:4 etc.? Dann würde ich sagen:
Code:
for p = 1:2:size(matrix, 5)
% arbeiten mit matrix(:,:,:,:, p:p + 1)
end


Ob das nun das tut, was es soll, ist wieder eine andere Frage.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
epsp
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 04.10.11
Wohnort: Lübeck
Version: ---
     Beitrag Verfasst am: 04.10.2011, 15:17     Titel:
  Antworten mit Zitat      
Entschuldige, dass hab ich nicht näher beschrieben.
Ich iteriere die P einzeln durch.
D.h. ich hätte in jedem Schritt eine MxNx2xS Scheibe aus der Gesamtdatenmenge. Die Frage wäre bei mir halt, wie ich dann möglichst über eine Multiplikation mit diesem großen Drehmatrix-Konglomerat eine identisch dimensionierte Matrix erhalte.

Edit:
Also für alle P soetwas wie:
[M,N,2,S]=[M,N,2,S]*[M,N,2,S,2]
berechnet wird. Wobei eben nur der 2-Vektor für alle M,N,S immer mit dem dazugehörigen 2x2-Anteil der anderen Matrix multipliziert wird.

Hoffe das konnte etwas eingrenzen Smile
Jedenfalls schonmal danke für die Antwort!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2011, 15:33     Titel: Re: Operationen auf "hochdimensionalen" Matrizen
  Antworten mit Zitat      
Hallo epsp,

Herzlich willkommen im Forum. Teilnehmer, die Fragen stellen, werden auf goMatlab nicht gelyncht.

Geschachtelte FOR-Schleifen sind kein Murks, solange man unnötige Wiederholungen im Innern vermeidet. Eventuell ist es sogar die effizienteste Methode, weil dabei möglichst wenig im Speicher herumgeschoben wird. Es gibt zwar ein altes Gerücht, dass MATLAB nicht effizient mit FOR-Schleifen umgehen kann. Das ist aber seit Version 6.5 überholt.

Eine [2x2]-Rotations-Matrix kann man natürlich nicht direkt auf ein [MxNxSx2]-Array anwenden. Aber Du könntest PERMUTE und RESHAPE verwenden, um eine [2 x M*N*S] zu erstellen. Dann gelingt eine normale Matrix-Multiplikation, und man kann die Daten hinterher wieder zurück transformieren.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
epsp
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 04.10.11
Wohnort: Lübeck
Version: ---
     Beitrag Verfasst am: 06.10.2011, 12:33     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Antwort, du hast natürlich recht... Durch das reshaping kann ich einfach mit der Drehmatrix multiplizieren, manchmal sieht man halt nicht wie einfach die Lösung doch ist. Dabei hab ich für die Konstruktion der Matrizen beides schon mehrmals machen müssen...
Ich denke damit hat sich das Problem wohl gelöst Wink
Falls was nicht geht melde ich mich nochmal!

Gruß
Malte
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.