Verfasst am: 17.02.2015, 15:50
Titel: Variable aus Skript in Funktion verwenden
Hallo zusammen. Ich habe ein Skript geschrieben, um mir verschiedene Verläufe plotten zu lassen.
Zusätzlich habe ich eine Funktion geschrieben, die mir ein Dropdown-Menü
erstellt, um hierüber auswählen zu können, welche Verlauf geplottet werden soll.
Hier der Code für das Dropdown-Menü und ein Fall (Case) des zu plottenden Verlaufs, das ich über switch abfrage :
Die Variablen wie Zeit, Winter_Werktag etc. werden direkt im Skript eingelesen. Die Funktion "Menue" kann jedoch nicht auf diese ganzen Variablen zugreifen.
Meine Frage lautet deshalb, wie die Funktion auf diese Variablen zugreifen kann. Oder muss ich die ganzen Variablen als global deklarieren?
Liebe Grüße und vielen Dank schonmal.
Martin91
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.02.2015, 16:28
Titel:
Hallo,
da kann ich Winkow von letzte Tage zitieren
"funktionen haben ihreren eigenen variablen raum. wenn du variablen nicht übergiebst sind sie da auch nicht bekannt. "
Das habe ich schon versucht, als Fehlermeldung kommt dann "Too many input arguments".
Also muss ich in der Funktion "Menue" die Anzahl der Eingabeparameter erhöhen bzw. festlegen. Wie kann ich das umsetzen?
Das habe ich schon versucht, als Fehlermeldung kommt dann "Too many input arguments".
Bitte poste den Code, mit dem Du es versucht hast. Dann kann man sehr effizient Vorschläge zur Verbesserung machen. Ohne Code ist das dagegen sehr schwierig.
Gruß, Jan
RaphaelW
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.02.2015, 17:53
Titel:
Sorry, der Code kommt sofort. Der erste Teil bleibt gleich, hier erfolgt ja nur das Einlesen.
Code:
% Einlesen der gesamten Wertetabelle aus Exceldatei
Profil = xlsread('Verlaeufe.xls',1,'B4:J99');
%Werte in Vektoren für die Jahreszeiten einteilen.
%Winter
Winter_Samstag = Profil(1:96,1)*Anzahl_Haushalte;
Winter_Sonntag = Profil(1:96,2)*Anzahl_Haushalte;
Winter_Werktag = Profil(1:96,3)*Anzahl_Haushalte;
%Hier folgen noch weitere Werte, die eingelesen werden. Hier habe ich die Funktion nun, wie Martin91 geschrieben hat, aufgerufen.
Das ist nicht die Funktion "Menue", sondern offensichtlich die Funktion "OpeningFcn".
Zitat:
abzurufen, kommt eine andere Fehlermeldung, und zwar:
"Index exceeds matrix dimensions."
Bitte poste immer die komplette Fehlermeldung. Insbesondere die Zeile, die den Fehler verursacht, muss man unbedingt sehen um herauszufinden, wo das Problem liegt.
So, ich habe mich nun auch mal angemeldet
Bei meinem Code habe ich die Zeile mit "function" ergänzt. Der komplette Code für "Menue" sieht nun folgendermaßen aus:
Code:
function Menue(Winter_Samstag,Winter_Sonntag,Winter_Werktag)
wird im Command Window nur angezeigt, dass die Funktion "Menue" aufgerufen wurde, aber es passiert nichts. Die Unterfunktionen "gui" etc. werden also nicht ausgeführt, das Dropdown-Menü erscheint folglich nicht.
Ich habe den Fehler selber gefunden, die Funktion "get" ist an dieser Stelle einfach falsch, ich bekomme den Wert ja nicht von einem Interface, wie bei den Variablen "day2" und "season2". Ich kann die Eingangsvariablen der Funktion "OnOkClick" ja direkt weiterverwenden. Ein klarer Denkfehler ..
Code:
function[season2, day2] = OnOkClick (obj, e, d, s, Zeit, SLP_Winter_Werktag, SLP_Winter_Werktag_ohne, A_w_Werktag, AnzH, AnzA) day = get(d, 'String');
day = day{get(d, 'Value')};
day2 = get(d, 'Value');
season = get(s, 'String');
season = season{get(s, 'Value')};
season2 = get(s, 'Value');
Nun funktioniert alles so wie es soll, herzlichen Dank nochmal für die Hilfe, besonders an Jan S!
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.