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

Verständnisfrage zu "syms", "subs" &

 

soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 17:23     Titel: Verständnisfrage zu "syms", "subs" &
  Antworten mit Zitat      
Hallo erstmal

ich möchte mittels Matlab einen Ausgleichskreis berechnen. Um nun die Funktionalmatrix (partiellen Ableitungen) zu bestimmen, hab ich folgenden Funktion geschrieben:


Code:


function [A, b] = partialDerivat(x0, y0, rad, mx, my)

syms x y r a b
A = zeros(1, 3);


f = sqrt((x-a)^2 + (y-b)^2) - r;
b = subs(f, {x, y, r, a, b}, {x0, y0, rad, mx, my});


fx = diff(f, x);
fx = simplify(fx);
A(1,1) = eval(subs(fx, {x, y, r, a, b}, {x0, y0, rad, mx, my}));


fy = diff(f, y);
fy = simplify(fy);
A(1,2) = eval(subs(fy, {x, y, r, a, b}, {x0, y0, rad, mx, my}));

fr = diff(f, r);
fr = simplify(fr);
A(1,3) = subs(fr, {x, y, r, a, b}, {x0, y0, rad, mx, my});
 


So, das Problem ist, wenn ich z.B: fx(also, f nach x abgeleitet) nummerisch berechnen will, verwendet man ja "subs". Es werden jetzt zwar die Werte für die Variablen eingesetzt, aber der Ausdruck nicht ausgewertet, was erst mittels "eval()" funktioniert.

Wenn ich aber zu Beginn b auswerte, funktioniert es auch ohne eval()....warum ist das so?!

mfg,
soad
Private Nachricht senden Benutzer-Profile anzeigen


symbolictoolbox
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 09.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2008, 11:29     Titel:
  Antworten mit Zitat      
*push*
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2008, 14:37     Titel:
  Antworten mit Zitat      
Vermutlich liegt es an der Variablen b.
Die benutzt Du einmal als Rückgabewert für die Funktion, dann als symbolische Variable, dann als Skalar. Probier' es doch mal mit drei unterschiedlichen Variablen...
 
soad
Themenstarter

Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2009, 16:20     Titel:
  Antworten mit Zitat      
danke, den fehler hatte ich eh schon bemerkt, ändert aber leider nicht das eigentliche "problem"...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2009, 19:30     Titel:
  Antworten mit Zitat      
Und was genau ist jetzt das eigentliche "Problem"?
Bitte mit lauffähigem Beispiel!
 
soad
Themenstarter

Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2009, 17:00     Titel:
  Antworten mit Zitat      
Eigentlich will ich nur den Grund verstehen, warum ich für die Auswertung der Funktion einmal eval() verwenden muss und einmal nicht?!
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.