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

Matlab Profi für Schleife gesucht !!!! Dringend

 

Jules
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 14.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2010, 21:27     Titel: Matlab Profi für Schleife gesucht !!!! Dringend
  Antworten mit Zitat      
Hi an alle, breche mir an der Schleife die Zähne aus, weiss echt nicht mehr weiter und muss bis Ende der Woche dies vorzeigen. Will mir 3 komplexe Richtungsvektoren mittels der Rotationsmatrix berechnen. Input theta ist <1x3> Vektor.



Code:

function vFo = directed_vectorcalculation(theta)

alpha = [(1/3)*(0*pi) 2*pi/3 4*pi/3];

La = 350;  
L = 800;  
Ra = 230;  
   
theta=[theta(1),theta(2),theta(3)];

sT= 50;
zOffset= 700;
vUp=[0;0;0];

for i=1:3

RotationZ = [cos(alpha(i))  -sin(alpha(i)) 0; sin(alpha(i)) cos(alpha(i)) 0; 0 0 1];
       
       
 
   vUP(i)  = RotationZ*([Ra - sT;0;zOffset]+ La*[cos(theta(i));0; sin(theta(i))]);  
 
   rvFo(i) = vUP(i) - ([x;y;z]);
       
   vFo(i)  = rvFo(i)/L;
end
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.08.2010, 21:45     Titel:
  Antworten mit Zitat      
Hallo,

... jetzt fehlt nur noch, dass du sagst, wo das Problem liegt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 03.08.2010, 00:43     Titel:
  Antworten mit Zitat      
am einfachsten geht's mit den in matlab eingebauten Fukntionen:

Code:

Rx = makehgtform('xrotate',t)
Ry = makehgtform('yrotate',t)
Rz = makehgtform('zrotate',t)


rotatedVector=Rz(1:3,1:3)*Rx(1:3,1:3)*Ry(1:3,1:3)*vector
 


es gibt auch welche für scaling etc....
oder mit selbstgeschriebenen Funktion:

Code:

function[rotatedVector] = vecrotate(vector, tiltX, tiltY, tiltZ)


tx = [1, 0, 0;...
    0, cos(tiltY), -sin(tiltY);...
    0, sin(tiltY), cos(tiltY)];

ty = [cos(tiltX), 0, sin(tiltX);...
    0, 1, 0;...
    -sin(tiltX), 0, cos(tiltX)];

tz = [cos(tiltZ), -sin(tiltZ), 0;...
    sin(tiltZ), cos(tiltZ), 0;...
    0, 0, 1];


rotatedVector = tz * (tx * (ty * vector'));
 


wobei: tx,tz und ty in rad sind

Gruß,
Lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
Jules
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 14.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2010, 10:53     Titel:
  Antworten mit Zitat      
Danke Harald,Danke Lilov für die schnellen Antworten!!!

@Harald und Zukünftige.

Gehe Zeile für Zeile den Quellcode durch.

Habe als Eingangsgröße theta einen Vektor<1x3> in rad, wollte nun mittels
Schleife die Rotationsmatrixen um die Z Achse berechnen für die drei Winkel alpha (1/3)*(0/pi) = 0°, alpha (2*pi/3)=120°;alpha (4*pi/3) =240°. Mit den jeweiligen Rotationsmatrixergebnissen vUP(i) bestimmen.Und im Anschluss rvFo(i)

Hier das erste Problem : theta(i) sei undefiniert, wie dass? Programm soll doch für ersten Schleifendurchlauf den ersten Wert von theta nehmen und soweiter... Würde sagen ich bekomm die Zuweisung zu den entsprechenden Werten nicht hin?

zum Schluss soll vFo ein vector <1x3> sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 03.08.2010, 13:04     Titel:
  Antworten mit Zitat      
hab den code etwas geändert..bei mit funktioneort's mit theta übrigens....
den winkel musst du als als vektor übergeben, also z.B.:
Code:

directed_vectorcalculation([1/2*pi 1/3*pi 1/4*pi] )
 


die zeile: alpha = [alpha(1), alpha(2),aloh(3)] ist überflüssig
hab bis zum vUP korrigiert aber in der nächsten Zeile sind undefinierten varieblen x, y , z von der ich keine Ahnung habe was die bedeuten


Code:

function vFo = directed_vectorcalculation(theta)

alpha = [(1/3)*(0*pi) 2*pi/3 4*pi/3];

La = 350;  
L = 800;  
Ra = 230;  
   

sT= 50;
zOffset= 700;
vUp = zeros(3,1);
rvFo = zeros(3,1);
vFo = zeros(3,1);

for i=1:3

RotationZ = [cos(alpha(i))  -sin(alpha(i)) 0; sin(alpha(i)) cos(alpha(i)) 0; 0 0 1];
       
       
 

   vUP  = RotationZ*([Ra - sT;0;zOffset]+ La*[cos(theta(i));0; sin(theta(i))]);  
 
   rvFo = vUP - ([x;y;z]);
       
   vFo  = rvFo/L;
end
 
[/code]
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.