Dies wird vereinfacht, sondern nimmt als Beispiel die folgenden MATLAB-Funktion Griff:Wie weisen Sie Variablen in einer Handle-Funktion Werte zu?
F = @(x)[x(1)-x(2);x(2)-x(3)]
Das System hat natürlich viele Lösungen. Ist es möglich, eine Lösung für eine Funktion wie diese zu erhalten, nachdem mindestens eine Variable ersetzt wurde? Zum Beispiel ersetzt x(3)=1
würde die Funktion werden:
G = @(x)[x(1)-x(2);x(2)-1]
und eine Lösung für die anderen Variablen erhalten werden. Ich benutze fsolve
und es funktioniert ziemlich gut für das System von Gleichungen, die ich habe. Natürlich kann ich mit der Symbolic Toolbox arbeiten, aber wenn ich sie in einer großen For-Schleife anrufe, ist es zu langsam für meinen Code.
Ich versuche, mit Code zu kommen, der G
gegeben F
und eine Reihe von Indizes in x
mit gegebenen Werten ersetzen kann.
Mögliche Duplikat [Konvertieren Eingang einer anonymen Funktion] (https://stackoverflow.com/questions/47486471/convert -input-of-anonyme-Funktion) –
Schönes Beispiel. Fast was ich tun muss. Der Unterschied besteht darin, dass zur Auswertung von F ich x verwende, was ein Vektor ist. Kann dies mit Vektoren gemacht werden? Denken Sie an die folgende Funktion: 'Funktion G = konvertieren (F, x, xMatrix)' Wo XMatrix angibt, welche Variablen ersetzt werden sollen. Wenn beispielsweise x = [3,2,1] und xMatrix = [0,0,1], bedeutet dies, dass G 'G = @ (x) [x (1) -x (2); x (2) -1] ' Kann dies getan werden? – ser
@SardarUsama: Es ist komplizierter als das, da es indizierte Elemente im Argument ersetzt, anstatt ein ganzes Eingabeargument zu ersetzen. – gnovice