Verfasst am: 04.07.2011, 11:41
Titel: Problem mit Eval Funktion
Hallo goMatlab-Community,
ich habe ein Programm in Matlab welches mir die Schnittpunkte von zwei Kreisen errechnen soll.
Dabei ist ein Kreis fest und der andere bewegt sicher wiederum auf einer Kreisbahn um ein anderes Zentrum.
Nach einem ersten Durchlauf der Schleife meldet Matlab den Fehler:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> Test at 81
eval([ 'A_' num2str(m) '1']) = [x1; M_2(2); z1];
Kann man num2str(k) evtl. nur einmal in einer Schleife verwenden oder wo ist hier mein Fehler?
das Problem ist, dass du einen mehrelementigen Vektor in eine Komponente eines (vermutlich) Double-Arrays zu schreiben versuchst.
Generell rate ich dazu, EVAL zu vermeiden, eben weil es zu solchen relativ schwierig zu identifizierenden Problemen kommen kann.
Zudem dürfte die EVAL-Anweisung in dieser Form sowieso nicht funktionieren, weil da in der Regel der gesamte Befehl rein muss. Wenn schon, dann müsste man wohl ASSIGNIN verwenden.
subs funktioniert nur bei symbolischen Ausdrücken.
Sind M_3, r_3 etc. symbolische Variablen??
Achte auch darauf: sin und cos arbeiten in MATLAB mit dem Bogenmaß, d.h. du willst wahrscheinlich cos(pi/4) statt cos(45). Alternative ist die Verwendung von sind, cosd etc.
erhalten habe. Denn dabei handelt es sich ja um symbolische Gleichungen die nur aus den "Namen" der Variablen bestehen und nichts berechnen.
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
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.