Verfasst am: 16.10.2018, 09:07
Titel: Funktion in einer anderen Funktion
Hallo Leute,
ich habe die Nullstellen einer Funktion, abgespeichert als Funktionsdatei. Der Übersichtlichkeit halber möchte ich eine weitere Funktionsdatei erstellen, welche mit diesem "Zwischenergebnis" weiterrechnet. Bis jetzt zeigt es mir die Nullstellen nur grafisch an, nicht aber im Workspace. Zudem beinhaltet die zweite Funktion eine Konstante H2, welche ich bereits in der ersten Funktion vorgegeben musste.
Muss ich nun die Konstante bei Parametervariation jedes mal in beiden Funktionen neu vorgeben? Sicher gibt es hier einen zweckmäßigeren Weg
for m = erster Eintrag(zeta) : Einzelergebnisse(zeta) : bis zum letzten Eintrag(zeta)
C(m) = (-1)^m * 2 .* zeta(m) .*(zeta(m).^2 + 2*H2 + H2^2)^(-1) end
vielen Dank für die schnelle Antwort. Die Übergabe scheint zu funktionieren (wenn ich in Funktion eins den Wert von H2 ändere und Funktion 2 unverändert ausführe).
Stellt sich nur noch die Frage, wie ich die Wurzeln als Werte angezeigt bekomme und diese dann weiterverarbeiten kann.
ich habe im ersten Code die Wurzeln einer Gleichung gesucht und diese auch geplottet. Dargestellt sind sie als rote Kreuze im Plot. Im Workspace zeigt es mir aber keine Zahlenwerte an. Diese brauche ich aber. Die gewonnen Werte möchte ich als Input für eine andere Funktion in einer separaten Datei nutzen, da die weiterführende Gleichung von den gefundenen Wurzeln abhängt.
Noch dazu handelt es sich bei der weiterführenden Gleichung um eine Summe, welche ich durch eine for-Schleife ausdrücken würde.
Allerdings funktionieren meines Wissens nach nur ganzzahlige Steps. Welche Möglichkeit gibt es noch?
Im Workspace zeigt es mir aber keine Zahlenwerte an.
Gibst du diese Werte denn auch an deinen Workspace zurück? Mit dem hier geposteten Code wird ja nur die Variable z zurück gegeben.
Zitat:
Noch dazu handelt es sich bei der weiterführenden Gleichung um eine Summe
Bitte angeben welche Gleichung du meinst, das macht das Lösen deines Problems deutlich einfacher.
Zitat:
Allerdings funktionieren meines Wissens nach nur ganzzahlige Steps. Welche Möglichkeit gibt es noch?
Was ist da dein Problem? Ohne dass du beschreibst was du genau möchtest ist es relativ schwierig zu helfen.
Und nein, For-Schleifen können nicht nur in "ganzzahligen Steps" durchlaufen werden. Allerdings musst du bei kleineren/größeren Schrittweiten dann die Indizierung deiner Vektoren/Matrizen anpassen.
Und es ist übrigens schneller und ratsam, Summen ohne Schleifen zu berechnen; zum Beispiel über Addition von Matrizen oder Vektoren.
Grüße
Jonas
_________________
1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
erweitern müsste. Wähle ich komplett den falschen Ansatz oder wo ist das Problem? Es funktioniert leider nicht.
Wenn dieses Problem gelöst würde, könnte dann die Summenbildung über deine empfohlene schnellere Variante mittels Matrizenrechnung angegangen werden, um die Summe
reingeschrieben ohne die vollständige Summe nur zum Testen, ob es funktioniert.
Mit einer der beiden Varianten erhoffte ich mir die Werte von "found_roots" im Workspace nachlesen zu können.
ich bin neu in der Thematik und dachte, damit sei es getan.
Also wenn ich sage C = found_roots , dann rufe ich sie "wann - jetzt" auf, indem ich auf ausführen klicke...so die eigentliche Idee.
Hast du eine Idee, wie sich so etwas ausdrücken lässt?
ich möchte einfach nur das Ergebnis eines Funktionsskripts als Input für ein anderes Funktionsskript nutzen und dabei die errechneten Ergebnisse im Workspace haben, mehr nicht.
Das mit dem
Zitat:
Da musst du ja irgendwo angeben wann du die "benutzen" möchtest.
Wobei "myfun" der Funktionsname ist, x1 ... nM die Funktionseingänge und y1... yN die Ausgabe deiner Funktion.
Wenn du jetzt innerhalb deines m-files deine Funktion aufrufst:
Dann stehen deine Funktionsausgabe in e1...eK. Und dann stehen die damit auch im Workspace.
Rufst du eine Funktion innerhalb einer Funktion auf, musst du die Werte in der inneren Funktion erst an die erste zurückgeben und dann von dieser an den Workspace zurück geben. Dann hast du die auch im Workspace stehen.
Grüße
Jonas
_________________
1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Rufst du eine Funktion innerhalb einer Funktion auf, musst du die Werte in der inneren Funktion erst an die erste zurückgeben und dann von dieser an den Workspace zurück geben. Dann hast du die auch im Workspace stehen.
Kannst du mir mit meinem Code bitte zeigen wie das aussieht?
Bei mir zeigt es zumindest schon mal die Werte der Wurzeln im Commad Window (immer noch nicht im Workspace) an, wenn ich in "found_roots" als globale Variable setze, auch wenn das von deinem Vorschlag abweicht.
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
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.