|
|
Veriablenwerte mit Handle übergeben |
|
etc.gamma |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.09.2010, 18:03
Titel: Veriablenwerte mit Handle übergeben
|
 |
Ich versuche mit Hilfe der Funktion fsolve ein Gleichungssystem zu lösen. fsolve sollte mir dann ja ein Array x zurückgeben, dass die Lösung des Gleichungssystems enthält. Mein Gleichungssystem ist aber nicht fix. Das heißt die Funktion, die gelöst werden soll benötigt mehr Argumente, die an sie übergeben müssen. Diese ändern sich bei der Anwendung von fsolve nicht, sind aber von Userinputs abhängig. Ich reicht also nicht die Funktion als Funktionshandle zu übergeben, sondern ich muss zusätzlich weitere Parameter übergeben, die dieser Funktion dann zur Verfügung stehen.
Hat jemand eine Idee, wie man das lösen kann? Schon mal vielen Dank im voraus.
|
|
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.10.2010, 09:41
Titel:
|
 |
|
 |
|
Nach einigem Recherchieren und Ausprobieren habe ich selber ein paar mögliche Lösungen gefunden. Falls jemand genau dieses Problem auch hat und das hier findet gebe ich darum mal kurz selbst die Antwort.
1. Möglichkeit:
Nicht die schönste, aber wohl praktische Möglichkeit. Man verwendet globale Variablen. Ich habe die Variablen, die ich zusätzlich übergeben wollte, die von fsolve aber nicht geändert werden sollten als global (sowohl in der "Basisfunktion", die die fsolve aufruft als auch in der zu lösenden Funktion). Dann kennt die zu lösende Funktion die Variablen auch ohne das sie an sie übergeben wurden. Die zu lösende Funktion erhält als input Argument damit nur noch den Vektor x für den eine Lösung gefunden werden soll.
2. Möglichkeit:
Schöner, aber auch etwas aufwendiger: Man erstellt sich eine eigene Funktion (z.B.: mysolve). Dazu nimmt man einfach fsolve und ändert das so ab, dass man der noch zusätzliche Inputargumente übergeben kann. Und diese übergibt man dann innerhalb von mysolve an die zu lösende Funktion.
3. Möglichkeit:
Man liest die Werte innerhalb der zu lösenden Funktion aus einer externen Datei ein (davon ist aber abzuraten, weil die zu lösende Funktion von fsolve zig mal aufgerufen wird und darum zig mal aus der Datei ausgelesen werden muss. Und das ist einfach langsam.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.10.2010, 11:26
Titel:
|
 |
Hallo,
die beste Möglichkeit fehlt eigentlich - die Verwendung eines anonymen Function Handles. Mal eine Art Code- Beispiel:
Wenn daraus nicht klar wird, wie's gemeint ist, nochmal melden.
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.
|
|