Wenn ich versuche, eine Unterfunktion in einer GUI/GUIDE-Datei (mit einem Funktions-Handle, die als globale Variable ausgesetzt wurde) aufzurufen, wird immer eine neue Achsen erstellt, auch wenn ich gesetzt die Achsen zu einer bestimmten Achse in der GUIDE Abbildung. Weiß jemand, warum das passiert? GUIDE-Code ist:MATLAB: Aufruf GUI/GUIDE-Funktionen von außerhalb
###############################################################
function varargout = demo(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @demo_OpeningFcn, ...
'gui_OutputFcn', @demo_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
function demo_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
global myhandles updateFunction;
myhandles = handles;
updateFunction = @update;
function varargout = demo_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
update();
function update()
global myhandles;
axes(myhandles.axes1);
plot(1:2,1:2);
###########################################################################
Und wenn ich (außerhalb Datei oben):
global updateFunction;
feval(updateFunction)
Ich sehe immer die Handlung in einem neu Figur Fenster erstellt, nicht in der GUI-Figur. Warum passiert dies?
Wir sollten die Update-Funktion sehen. Das ist ziemlich wichtig, um dir zu helfen. Außerdem sind globale Variablen in der Regel nicht erforderlich und machen Ihren Code oft schwieriger zu warten. Vielleicht möchten Sie Ihren Code auf andere Weise strukturieren. – MatlabDoug