subs(M_n, m, 7)
funktioniert auch, obwohl theta nur 5 Elemente hat.
Ja, das ist mir auch schon aufgefallen. Es spielt aberkeine große Rolle, da über eine Abfrage sichergestellt wird, dass auf keine Elemente größer als n zugegriffen wird. Ich hab den Code hier nur auf das wichtigste gekürzt.
subs(M_n, m, 3)
gibt etwas in Abhängigkeit von theta(3) zurück, Eingabe von
theta(3)
liefert aber theta3.
Was ist denn das Ziel des ganzen?
Ja das ist auch so beabsichtigt. Später im Code wird theta3 dann ersetzt mit M_3=subs(M_3, theta(3), pi);
Das Ganze ist Teil einer inversen Kinematik Simulation. Physikalisch kann man sich das so deuten: in den Matrizen stecken die translatorischen und rotatorischen Anteile eines n-gliedrigen Roboterarms. Der Vektor theta repräsentiert die generalisierten Koordinaten des Systems. Um diesen Arm schrittweise an einen beliebigen Punkt anzunähern, brauch ich die Jacobimatrizen der einzellnen M_n Matrizen, weshalb ich mir Rechnerei mit den sym()bolischen Zeug überhaupt antue.
Ich hatte eigentlich gehofft in Matlab ginge das ganze recht intuitiv von der Hand :(
Hast du eine Ahnung ob der Aufruf theta = sym('theta', [1 n]); überhaupt dafür gedacht ist um einen Vektor mit n Variablen zu implementieren? Vielleicht gibts noch andere Möglichkeiten? Wichtig ist eben, dass ich die Jacobimatrix davon bilden kann.
↧