|
|
|
Operationen auf "hochdimensionalen" Matrizen |
|
| epsp |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 04.10.11
|
 |
|
 |
Wohnort: Lübeck
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.10.2011, 14:46
Titel: Operationen auf "hochdimensionalen" Matrizen
|
 |
| |
 |
|
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
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.10.2011, 15:13
Titel:
|
 |
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:
Ob das nun das tut, was es soll, ist wieder eine andere Frage.
Grüße,
Harald
|
|
|
|
| epsp |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 04.10.11
|
 |
|
 |
Wohnort: Lübeck
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.10.2011, 15:17
Titel:
|
 |
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
Jedenfalls schonmal danke für die Antwort!
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.10.2011, 15:33
Titel: Re: Operationen auf "hochdimensionalen" Matrizen
|
 |
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
|
|
|
|
| epsp |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 04.10.11
|
 |
|
 |
Wohnort: Lübeck
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.10.2011, 12:33
Titel:
|
 |
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
Falls was nicht geht melde ich mich nochmal!
Gruß
Malte
|
|
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|