Verfasst am: 25.11.2009, 09:16
Titel: "Input argument "handles" is undefined."
Ich habe eine m-File mit mehreren Funktionen. In einer Funktion werden 3 Variablen (V1, V2, V3) Strings zugeordnet, diese Variableninhalte schreibe ich dann in die handles (handles.V1=V1 etc.) und speichere mit guidata(hObject, handles).
Die Funktion, die diese Variablen wieder aufrufen soll sieht folgendermaßen aus:
Ja, die Übergabe ist vermutlich das Problem, ich verstehs bloß nicht.
Bisher dachte ich, das was ich beim Funktionsaufruf in den runden Klammern stehen habe ist das, was ich übergebe. Und da steht ja handles. Funktioniert das anders?
Wenn ich es so probiere wie von dir vorgeschlagen, dann sagt er mir "Input argument "hObject" is undefined."
Ne ist schon richtig.
Hast du dein Programm mal debug?
Dann könntest du sehen wo genau der fehler auftritt.
Alternativ könntest du ja mal in der Funktion Filter dir die 'handles' anzeigen lassen. Dort müssten ja deine Variablen drin stehen.
Code:
functionFilter(....)
handles % Einfach handles ohne Semikolon aufrufen
.....
Hab mir die handles an verschiedenen Stellen anzeigen lassen. In der generierenden Funktion nach dem Speichern ist alles paletti.
In der aufrufenden Funktion FILTER sind sie weg. Problem ist also die Übergabe.
Nochmal ein bisschen mehr Code, vielleicht hilft dir das:
Code:
function pushbutton_leads1_Callback(hObject, eventdata, handles)% diese Funktion generiert die Variablen ...
handles.namelinks=namelinks; % zur Übergabe an Funktion FILTER
handles.namerechts=namerechts;
handles.namefuss=namefuss;
handles.L=L;
handles.R=R;
handles.F=F;
guidata(hObject, handles);
% Auslesen des Status der Checkbox Filter
handles.value_filter1=get(handles.checkbox_filter1, 'Value');
guidata(hObject, handles);
if handles.value_filter1==1% wenn Filter an FILTER% FILTER wird aufgerufen return end ...
functionFILTER(hObject, eventdata, handles)% in der Funktion sollen die Variablen aufgerufen werden % Fouriertransformation
N=15000; % Abtastwerte (evt. später einlesen lassen)
t=30; % Messzeit in s ( evt. später einlesen lassen)
fm=500; % Messfrequenz (evt. später einlesen lassen)
f=linspace(0,fm,N);
Ok, Problem gelöst. Danke!
Wusste nicht, dass ich die zu übergebenden Variablen auch beim Aufruf hinschreiben muss, hatte sie nur da stehen wo die Funktion definiert ist. Eigentlich aber natürlich logisch...
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.