Rotationsmatrix für Eigenvektoren aus Hauptkompontenanalyse |
30.06.2010, 16:31 | FloG | Auf diesen Beitrag antworten » | ||
Rotationsmatrix für Eigenvektoren aus Hauptkompontenanalyse ich versuch jetzt schon seit einiger Zeit folgendes Problem zu lösen: Für eine Punktemenge in 3D wird die Hauptkomponentenanalyse durchgeführt. Diese liefert mir dann 3 Vektoren die die Hauptrichtungen für die Punktewolke anzeigen (die 3 Vektoren sind logischerweise orthogonal zu einander). Nun möchte ich jeden Punkt in der Punktewolke so drehen, dass, bei erneuter Berechnung der Hauptrichtungen diese entlang der Hauptachsen meines ursprünglichen Kooridnatensystems sind. Dazu brauche ich eine Dreh-/Rotationsmatrix die ich dann mit jedem Punkt multipliziere. Wie komme ich nun an diese Matrix? Ich dachte mir, ganz einfach ich berechne mir den Winkel zwischen dem Hauptrichtungs-Vektor für die jeweilige Achse und dem Einheitsvektor. Anschließend die Rotationsmatrix aufstellen. Aber wie genau? Wäre wirklich super, wenn ihr mir auf die Sprünge helfen könnten! Danke Gruß Flo |
||||
30.06.2010, 16:38 | Mazze | Auf diesen Beitrag antworten » | ||
Das ist kein Problem. Eine lineare Abbildung lässt sich eindeutig durch (richtig gewählte) Punkte beschreiben. Nehme dir die 3 Richtungen her und schreibe auf wo die 3 Richtungen nach der Rotation liegen sollen Sei A eine 3x3 Matrix dann haben wir die 3 Gleichungen Du kannst auf diese Weise ein Gleichungssystem mit 9 unbekannten (die Matrixeinträge) und 9 Gleichungen erstellen. Sofern das System lösbar ist erhälst Du so deine Matrix. |
||||
30.06.2010, 16:58 | FloG | Auf diesen Beitrag antworten » | ||
Hallo Mazze, danke für deine AW. Hmm, gibt es auch noch eine andere Möglichkeit? Ich sollte das ganze in eine Software integrieren und ein Gleichungssystem mit 9 Gleichungen/Unbekannten ist doch ein recht großer Aufwand zu lösen. Danke! Flo |
||||
30.06.2010, 17:46 | Mazze | Auf diesen Beitrag antworten » | ||
Benutze doch den Gaussalgorithmus, der wird auch in jeder Implementierung verwendet. Welche Software verwendest Du? Vielleicht gibt es ja schon den Gaußalgorithmus integriert. |
||||
30.06.2010, 18:46 | FloG | Auf diesen Beitrag antworten » | ||
Die Software ist in JAVA geschrieben. Ich hab auch schon ein bisschen gegoogelt und das NInJa Projekt gestoßen. Aber irgendwie gibt es da keine Projektwebseite oder Downloadquelle. Zudem wäre dies halt eine weitere Abhängigkeit/Bibliothek die ich einbinden müsste und das mache nur wenn es keine andere Möglichkeit gibt. Ist denn mein Ansatz über die Winkel zwischen den Vektoren so falsch? Das wäre doch viel einfacher!? |
||||
30.06.2010, 19:56 | Mazze | Auf diesen Beitrag antworten » | ||
Schau dir mal das an. |
||||
Anzeige | ||||
|
||||
30.06.2010, 21:44 | FloG | Auf diesen Beitrag antworten » | ||
Kenne ich schon. Ich muss mich wohl Morgen Vormittag noch einmal davor setzen. Aber in diesem Fall sollte das so funktionieren wie ich zu Beginn beschrieben habe? Also zB für die Drehung der x-Koordinate: Winkel zwischen Einheitsvektor-X und Eigenvektor-X berechnen und dann halt in die Matrix einsetzen... |
||||
01.07.2010, 09:49 | FloG | Auf diesen Beitrag antworten » | ||
Okay, eigentlich könnte ich ja drei Matrizen bilden: Rotation um die x-Achse: Rotation um die y-Achse: Rotation um die z-Achse: Aber wie kombiniere ich jetzt diese 3 Matrizen, sodass ich nur noch eine Matrix habe die die Rotation in alle drei Richtungen durchführt? Danke Flo |
||||
01.07.2010, 14:58 | FloG | Auf diesen Beitrag antworten » | ||
Ich bin mittlerweile auf die Eulerwinkel (wikipedia.org) gestoßen und bin mir ziemlich sicher, dass das ist was ich gesucht habe. Jedoch frage ich mich nun wie ich auf die Winkel komme die benötigt werden? Wie man die Rotationsmatrix für alle drei Richtungen berechnet ist weiter unten in dem Artikel ja gut erklärt. Aber bis dahin ist es wohl noch ein weiter Weg... |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|