|
|
Ominöses Verhalten von subs() |
|
Carnot |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 14.04.14
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 20:06
Titel: Ominöses Verhalten von subs()
|
 |
|
 |
|
Guten Abend,
nachdem mir gestern so gut geholfen wurde, möchte ich nocheinmal um Hilfe bei einem anderen Problem bitten.
Ich habe einen Vektor mit Einträgen. Diesen Vektor benötige ich, um mir Matrizen zu basteln.
Matrix 1 könnte beispielsweise so aussehen:
Oder auch so wie Matrix Nr 2:
Wichtig ist, das die Basisstruktur der Matrix immer gleich bleibt, nur die Argumente der Kosinüsse ändern sich.
In Matlab habe ich mir das ganze so zurechtgebogen:
Wenn ich jetzt die Matrix für haben möchte hänge ich noch folgendes an den Code an:
Wenn ich die in der Kommandezeile dann die Variable M_3 aufrufe steht da:
M_3 =
[ cos(theta(3)), 0]
[ 1, sin(theta(3))]
Wunderbar, genau so sollte es auch sein!
Wenn ich aber folgenden Code anhänge:
dann bekomme ich folgende Matrix:
M_3 =
[ cos(pi^(1/4)/gamma(3/4)), 0]
[ 1, sin(pi^(1/4)/gamma(3/4))]
Was ist hier falsch gelaufen? Woher kommt das Pi und das gamma? Die einzige Änderung die ich gemacht habe war: statt subs(M_n,m,3) rufe ich subs(M_n,m,1) auf? Wieso geht das mit der 1 dann so kaputt? Es funktioniert mit jeder Zahl aber nicht mit der 1
Hat jemand ne Idee?
Zuletzt bearbeitet von Carnot am 15.04.2014, 20:25, insgesamt einmal bearbeitet
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 20:14
Titel:
|
 |
Hallo,
woher kommt D?
Grüße,
Harald
|
|
|
Carnot |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 14.04.14
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 20:26
Titel:
|
 |
Hallo Harald,
es müsste natürlich M_n heißen. Habs korrigiert.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 21:29
Titel:
|
 |
Hallo,
ich kann mir das auch nicht erklären.
Jedoch macht der Code ohnehin nicht das, was du denkst:
funktioniert auch, obwohl theta nur 5 Elemente hat.
Und
gibt etwas in Abhängigkeit von theta(3) zurück, Eingabe von
liefert aber theta3.
Was ist denn das Ziel des ganzen?
Grüße,
Harald
|
|
|
Carnot |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 14.04.14
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 22:22
Titel:
|
 |
|
 |
|
Harald hat Folgendes geschrieben: |
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.
Harald hat Folgendes geschrieben: |
gibt etwas in Abhängigkeit von theta(3) zurück, Eingabe von
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
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
ü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.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.04.2014, 09:41
Titel:
|
 |
Hallo,
Zitat: |
Hast du eine Ahnung ob der Aufruf Code:
theta = sym('theta', [1 n]);
überhaupt dafür gedacht ist um einen Vektor mit n Variablen zu implementieren? |
Das ja, aber ich habe wie gesagt andere Bedenken.
Wäre es nicht einfacher, die Matrizen abhängig von alpha zu definieren und dann theta(m) einzusetzen als von theta(m) und dann m einzusetzen?
Grüße,
Harald
|
|
|
|
|
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.
|
|