Output from handles instead of globals

I have these three different functions that all relate to the GUI, one doing some stuff, the other one using the result, and the third using the result from the 2nd. I have tried to use globals for the results, but it is a mess, so i was wondering if it was possible to use handles or something like that to do it instead?
function openFile_Callback(hObject, eventdata, handles)
global im;
im = imread(myimage);
-
function analyzeImage_Callback(~, ~, ~)
global im
global dat
level = graythresh(im);
diff_im = im2bw(im,level);
area = sum(diff_im);
dat = [area];
-
function exportResults_Callback(hObject, eventdata, handles)
global dat
csvwrite('csvlist.dat',dat)

 Respuesta aceptada

Bjoern
Bjoern el 17 de Feb. de 2011

0 votos

i cant get nested functions to work,when i try to run my code after making it nested i get this error:
??? Error while evaluating uimenu Callback
??? Error using ==> feval Undefined function or method 'openFile_Callback' for input arguments of type 'struct'.
Error in ==> gui_mainfcn at 96 feval(varargin{:});
Error in ==> cellcounter at 42 gui_mainfcn(gui_State, varargin{:});
Error in ==> @(hObject,eventdata)cellcounter('openFile_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uimenu Callback

6 comentarios

Matt Tearle
Matt Tearle el 17 de Feb. de 2011
From the names, am I right in assuming that the GUI layout was done in GUIDE? If so, the generated code probably used subfunctions... ergh.
OK, probably easiest to go to plan B: use get/setappdata:
setappdata(handles.figure1,'image',im);
then
im = getappdata(handles.figure1,'image');
Bjoern
Bjoern el 17 de Feb. de 2011
you mean like:
function openFile_Callback(hObject, eventdata, handles)
im = imread(myimage);
setappdata(handles.figure1,'image',im);
function analyzeImage_Callback(hObject, eventdata, handles)
im = getappdata(handles.figure1,'image');
imshow(im);
Because i still get an error with that.
Matt Tearle
Matt Tearle el 18 de Feb. de 2011
Yep, just like that. So what error do you get now?
Bjoern
Bjoern el 21 de Feb. de 2011
i get the error that im is empty, "??? Undefined function or variable "im".
".
Is setappdata( the same as set(
Walter Roberson
Walter Roberson el 21 de Feb. de 2011
No, setappdata() is *not* the same as set() ! Please read the documentation!
Bjoern
Bjoern el 21 de Feb. de 2011
it got it working. Thanks for the help

Iniciar sesión para comentar.

Más respuestas (1)

Matt Tearle
Matt Tearle el 17 de Feb. de 2011

0 votos

If these functions all live in the same file, the simplest way to pass data around is to use nested functions. A nested function has access to its parent's workspace.
The other way is to use getappdata/setappdata to embed the data in the figure handle.

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Preguntada:

el 17 de Feb. de 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by