2017-02-16 2 views

Antwort

0

Das Problem ist, dass Sie A als symbolische Funktion definiert haben (symfun), nicht als ein Array von symbolischen Ausdrücken. Statt dessen:

syms c A tt(t) 
A = [0; 
    c*sin(tt(t)); 
    c*sin(tt(t))]; 

Jetzt wird A(2)c*sin(tt(t)) zurück.

Alternativ, wenn Sie nicht die Definition von A(t) ändern können, müssen Sie es auf eine Zwischenvariable zuweisen es zu einer Reihe von symbolischen Ausdrücken konvertieren:

syms c A(t) tt(t) 
A(t) = [0; 
     c*sin(tt(t)); 
     c*cos(tt(t))]; 
B = A(t); 

Dann B(2) zurückkehren c*sin(tt(t)). Sie können auch formula verwenden, um die zugrundeliegenden Ausdrücke zu extrahieren:

B = formula(A): 
0

in Matlab müssen Sie „U-Boote (f)“ zu verwenden, Funktion zu bewerten Funktionen .

zuerst die Funktion erstellen:

syms g(x) 
g(x) = x^3; 

Danach den Wert X asign:

x=2; 

dann, wenn Sie g mit der U-Boote Funktion bewerten, ist das Ergebnis der erwartete Wert 8, aber es ist einer symbolischen Funktion, gnew, zugeordnet. Diese neue symbolische Funktion hängt formal von der Variablen x ab.

gnew = subs(g) 

Der Funktionsaufruf g (x) gibt den Wert von g für den aktuellen Wert von x zurück. Zum Beispiel, wenn Sie den Wert 2 der Variablen x zugewiesen, dann ruft g (x) zu nennen g entspricht (2)

g2 = g(x) 

g2 = 
4 

g2 = g(2) 

g2 = 
4 
+0

ich bearbeiten nur meine Frage es klarer zu machen. Ich möchte die Funktion nicht durch eine Konstante ersetzen. – greenworld

+0

Ich habe das Problem verstanden und ich denke, dass das nicht einfach ist, ohne die Funktionsdefinition zu ändern. Ist es möglich, die Funktion zu ändern, um 2 Parameter zu erhalten? Auf diese Weise können Sie den Parameter 'a' = 2 und den Parameter 'b' die Funktion schützen, die Sie nicht ändern möchten. –

Verwandte Themen