es erscheint folgende Fehlermeldung:
"error: attempted to use a complex scalar as an index
(forgot to initialize i or j?)"
Probleme macht das A(i,1) in der Funktion, offenbar kennt er das i dort nicht. Wie kann ich das elegant lösen? Die fsolve function ohne schleife funktioniert. Was mich außerdem stört ist, dass man die variablen in der funktion und außerhalb definieren muss damit es klappt? geht das auch anders?
für hilfe wäre ich dankbar. Hab das jetzt mit Octave gemacht. aber ich denke es ist ein Programmierproblem
Verfasst am: 21.06.2013, 11:49
Titel: Re: fsolve innerhalb einer Schleife funktioniert nicht
Mal peau a peau ...
ben82 hat Folgendes geschrieben:
Was mich außerdem stört ist, dass man die variablen in der funktion und außerhalb definieren muss damit es klappt? geht das auch anders?
Die Funktion kann nur mit den Werten arbeiten/rechnen, die du ihr zur Verfügung stellst! Du musst also deine Funktion erweitern und nicht bloß x an diese übergeben, sondern alle Werte mit denen du in der Funktion rechnen möchtest.
Also function z=f(x, K1 , K2 , K3, A);
_________________
hallo markuman,
danke erstmal für deine Antwort.
habe es probiert mit z=f(x,i,K1,K2,K3,A)und dann innerhalb der function die variablen gelöscht. Aber das macht er leider nicht.
error: 'A' undefined near line 12 column 15
kann es sein das man nur 1 variable übergeben kann?
das wäre schlecht, weil für die Schleife müsste ich mindestens noch das "i" an die function übergeben. Das ich K1,K2 usw nochmal initialisieren müsste, damit könnte ich notfalls noch leben.
Du läds ja immer noch den ganzen krämpel in der Funktion?
Naja, i ist ja auch eine Zahl, und keine Variable. Wird nur leider dauernd als Schleifen Variable benutzt - funktioniert aber trotzdem - aber wär das selbe Verbrechen wenn man for pi = 23:42 macht.
Ich glaube auch dass du fsolve falsch verwendest. Es könnte so funktionieren (ist so aber glaub ich auch falsch. Also am besten noch mal die Dokumentation von fsolve angucken (ja, bei Matlab, die Octave Doku ist turbo grottig!)), da ich jedoch nicht deine txt Dateien habe, ist das auch eher als pseudocode zu verstehen.
Code:
% meinefunktion.m function z=meinefunktion(x,K1,K2,K3,A)
ich hab den krämpel immer noch reingeladen, weil ich bei dieser function immer die Fehlermeldung bekomme "A" undefined.... wenn ich die rauslösche.
dein erstes Beispiel wo du mehrere variablen einlädst, funktioniert bei mir auch.
aber leider nicht in meinem programm.
Hast wohl recht. Ich muss mich nochmal intensiv einlesen ins FSOLVE.
Wie gesagt... es wundert mich nur, dass es ohne Schleife geht und ich es mit Schleife garnicht zum laufen bekomme.
Danke trotzdem für die Hilfe
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
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.