|
|
Variabel in mehreren Unterfunktionen |
|
Thomas_74 |

Forum-Century
|
 |
Beiträge: 241
|
 |
|
 |
Anmeldedatum: 06.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2009, 14:51
Titel: Variabel in mehreren Unterfunktionen
|
 |
Ich suche eine Möglichkeit eine Variabele in mehreren Unterfunktionen zu benutzen. mit global und persist hat das leider nicht funktioniert.
|
|
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2009, 15:21
Titel:
|
 |
Als Parameter übergeben?
Wie hast Du das mit global denn gemacht? Eigentlich funktioniert das nämlich schon.
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.02.2009, 17:09
Titel:
|
 |
Wenn es mehrere (vom Typ her unterschiedliche) Variablen sind, kannst Du die auch in einer Struct oder Cell verpackt übergeben.
|
|
|
Bijick |

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 09.02.2009, 17:46
Titel:
|
 |
Hallo Thomas,
praktisch sind auch die "nested functions", also geschachtelte Funktionen. Die verwende ich immer, wenn ich Funktionen an einen Löser wie ode45 oder fminserach übergeben muss. Aber schildere doch mal Dein Problem genauer, am besten mit einem lauffähigen Beispiel, das den Fehler erzeugt.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Thomas_74 |
Themenstarter

Forum-Century
|
 |
Beiträge: 241
|
 |
|
 |
Anmeldedatum: 06.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.02.2009, 18:04
Titel:
|
 |
Ich fitte Funktionene mit lsqcurvefit und will da Zahlen (double) als Konstanten drin haben die ich nicht jedesmal in die Funktionen Tippen will.
Bis jetzt mach ich das mit save/load das geht ist aber langsam.
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.02.2009, 18:11
Titel:
|
 |
Poste doch einfach mal die interessanten Teile deines Codes, das dürfte die Sache wesentlich erleichtern, das ist alles sehr schwammig, was Du da beschreibst...
|
|
|
Thomas_74 |
Themenstarter

Forum-Century
|
 |
Beiträge: 241
|
 |
|
 |
Anmeldedatum: 06.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.02.2009, 11:14
Titel:
|
 |
Hi,
ich versteh gerade nicht welcher Teil der "interessante" sein soll.
Ich denke das mein Problem allgemein auftaucht wenn man in einer Formel die man mit lsqcurvefit anfitten will einen Wert einfügen will der sich nicht ändern soll.
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.02.2009, 11:36
Titel:
|
 |
Meinst Du etwa sowas?
Der interessante Teil ist, wie Dein Programm strukturiert ist. Welche Funktion wird mit welchem Inhalt aufgerufen? Wenn Du gar keine Funktionen verwendest, dann pack deine unveränderlichen in Variablen (siehe oben). Wenn Du Funktionen verwendest, dann übergib die Variablen mit den konstanten Werten als Parameter an die Funktion. Wenn Du keine Funktionsparameter willst, dann mach die Variablen global. Wenn das nicht klappt, dann poste den Code, wie Du das mit dem global machen anstellst (sowohl im Hauptprogramm als auch in Deiner Funktion). So ins blaue hinein raten ist meistens ziemlich schwer.
EDIT: Code-tags richtig gesetzt
Zuletzt bearbeitet von Epfi am 11.02.2009, 11:55, insgesamt einmal bearbeitet
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.02.2009, 11:50
Titel:
|
 |
Hm, ist das Problem, dass Du auf Deine Werte nicht über die Grenzen einer Funktion hinweg zugreifen kannst, oder willst Du irgendwie einen Parameter 'festhalten'.
Gib doch bitte mal endlich ein Beispiel...
|
|
|
Thomas_74 |
Themenstarter

Forum-Century
|
 |
Beiträge: 241
|
 |
|
 |
Anmeldedatum: 06.02.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.02.2009, 16:29
Titel:
|
 |
Hi,
die Formel die ich mit lsqcurvefit(@steigung,Startwert,Xwer,Ywert) fitten will ist so was wie ax+b wobei ich b konstant haben will.
Dabei will ich b nicht in jeder Formel von Hand eingeben.
|
|
|
Bijick |

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 24.02.2009, 17:19
Titel:
|
 |
Hallo Thomas,
ja, das geht mit den nested functions. Hier ein Beispiel:
Hierbei ist die Matrix A die besondere Variable. Sie wird nicht an ObjectiveFunction übergeben, ist dort aber trotzdem bekannt, weil die Funktionen ineinander geschachtelt sind. Sie dürfte auch gar nicht übergeben werden, weil sie ja nicht optimiert werden soll, ebenso wie bei Deinem b. Das Beispiel ist auch lauffähig und kann mit einer nxn-Matrix A und einem nx1-Spaltenvektor StartVector aufgerufen werden. (Keine Garantie für sinnvolle Ergebnisse )
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
|
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.
|