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

Koordinaten drehen

 

Katsche
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 27.01.09
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 27.02.2009, 11:13     Titel: Koordinaten drehen
  Antworten mit Zitat      
Hallo,
ich möchte Koordinaten in ein anderes Koordinatensystem umrechnen. Diese Koordinaten liegen als Matrix nxn vor. Die Werte in der Matrix sind die Z Koordinate, während nxn quasi x und y sind, so dass jede x-/y-Kombination eine Z-Koordinate besitzt. Ich habe das wie folgt probiert. Rz und Ry sind Drehmatrizen 3x3 um die z- bzw y-Achse.

Code:

Zneu=zeros(length(X_alt),length(Y_alt));         %Erzeugen einer Leeren Matrix
for n=1:length(X_alt)              %für alle alten X-Werte
        for m=1:length(Y_alt)              %für alle alten Y-Werte
        Ztemp=Rz*Ry*[X_alt(1,n);Y_alt(1,m);Z_alt(n,m);   %Umrechnen des Vektors
        Zneu(n,m)=Ztemp(3,1);          %Eintragen der Umgerechneten Koordinaten in die neue Matrix
        end
end
 

Anscheinend stimmt aber was in der Schleife nicht, da eine Matrix bekomme, in der in jeder Spalte einer Zeile der gleiche Wert steht, sie ändern sich also nur Zeilenweise. Das kann nicht sein, da ich am Anfang keine gleichen Werte drin habe.

Schon mal vielen Dank für eventuelle Hilfe!

mfg Katsche
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 27.02.2009, 12:32     Titel:
  Antworten mit Zitat      
versuch lieber jeder zu transformierenden Vektor aus der Matrix rauszuholen und dann einfach mit der Transformationsmatrizen zu multiplizieren und anschliessend einer neuen Matrix der transformierte Vektor hinzufügen.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Katsche
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 27.01.09
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 27.02.2009, 12:41     Titel:
  Antworten mit Zitat      
Hallo,
ich bin der Meinung, dass ich das mit der Schleife da oben mache!?
Ich schnapp mir den Vektor [X1;Y1;Z11] rechne den um und trage den in meine Matrix am Punkt [1,1] ein. Dann nehm ich den Vektor [X1;Y2;Z12] rechne ihn um und schreib ihn an die Stelle [1,2]...usw.
Aber da kommt nur Mist bei raus.
Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 27.02.2009, 14:33     Titel:
  Antworten mit Zitat      
Wie groß sind denn Deine Drehwinkel. Der um die z-Achse ist nicht zufällig 0° oder 180°?
Private Nachricht senden Benutzer-Profile anzeigen
 
Katsche
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 27.01.09
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 27.02.2009, 14:38     Titel:
  Antworten mit Zitat      
Der um Z ist 0° (da funktioniert es aber, weil man ja eigentlich nichts macht) und 45° und 90°.
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 27.02.2009, 14:47     Titel:
  Antworten mit Zitat      
Hier fehlt noch eine eckige Klammer am Ende:
Code:

Ztemp=Rz*Ry*[X_alt(1,n);Y_alt(1,m);Z_alt(n,m)];  % <-
 

aber das ist vermutlich bloß ein Abtippfehler?

Kannst Du mal schreiben, wie Du die Drehmatrizen implementiert hast?
Private Nachricht senden Benutzer-Profile anzeigen
 
Katsche
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 27.01.09
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 27.02.2009, 15:00     Titel:
  Antworten mit Zitat      
Richtig, die eckige Klammer ist nur ein Abtippfehler.

Rz=[cos(alpha) sin(alpha) 0;-sin(alpha) cos(alpha) 0,0 0 1]
Ry=[cos(phi) 0 -sin(phi);0 1 0;sin(phi) 0 cos(phi)]

Die müssten stimmen, weil es funktioniert, wenn ich einen Bsp.´-Punkt herausnehme.
Auch die Drehrichtung gegen den Uhrzeigersinn im Rechtssystem usw, habe ich berücksichtigt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 27.02.2009, 15:10     Titel:
  Antworten mit Zitat      
Es ist eigentlich ganz simpel: Die z-Koordinate im neuen System ist bei dieser Kombination von Drehungen unabhängig von der y-Koordinate im alten System. Wenn man das Produkt Rz*Ry bildet, ergibt sich für die dritte Zeile der Gleichung:

z_neu = sin(phi)*x_alt + 0*y_alt + cos(phi)*z_alt

Insofern ist es völlig normal, daß die Werte zeilenweise identisch sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Katsche
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 27.01.09
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 27.02.2009, 15:18     Titel:
  Antworten mit Zitat      
Ok, danke!
Dann liegt mein Problem vermutlich wo anders. Ich werde mich mal auf die Suche danach begeben!
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 - 2024 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.