MATLAB Answers

Kyle
0

GUI register?

Asked by Kyle
on 9 Jul 2011
Hi,
I'm wandering how come the below code from GUI doesnt create registers that are stored in workplace? What should i do if i wana create the register in workplace via GUI?
function im1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to im1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a;
[FileName,PathName]= uigetfile(...
{'*.bmp;*.jpg;*.jpeg;*.tif;*.tiff;*.png','All Image Files(*.bmp,*.jpg,*.jpeg,*.tif,*.tiff,*.png)';...
'*bmp','bitmap Files (*.bmp)';...
'*.jpg;*.jpeg','JPEG Files(*.jpg,*.jpeg)';...
'*.tif;*.tiff','Tiff Files(*.tif,*.tiff)';...
'*png','PNG Files (*.png)';...
'*.*','All Files (*.*)'}, ...
'Pick an image file');
fullpath = sprintf('%s%s',PathName, FileName);
a=imread(fullpath);
imshow(fullpath,'parent',handles.im1);

  4 Comments

Show 1 older comment
Image Analyst
on 10 Jul 2011
Maybe he means variable??? But he declared "a" global, so I'm not sure what he's talking about either. By the way, you already read in the image. So I'd do it this way instead:
axes(handles.im1);
imshow(a);
Kyle
on 10 Jul 2011
ya i'm talking about variable. i notice that the variable a is not in my workspace after executing the code.
a=imread(fullpath);
This line was added later on, as i want to store the image in variable a so that other function could use it. now the only way i could pass the variable is by making it 'global' on every function that need to use variable a.
Image Analyst
on 10 Jul 2011
Yes, that is true. It is more like a "friend" or shared variable than a true global. It's not really global, only routines that have the line "global a;" will be able to see it. It's saved in the global workspace of your m-file so you won't see it in the "base" workspace which is always there, even when your code finishes. If you need it in the base workspace (for some reason that I can't figure out) then you need to call assignin, as the others said.

Sign in to comment.

2 Answers

Answer by Prabhakar on 10 Jul 2011
 Accepted Answer

If the question means that you want to create a variable in the base workspace filled with data from the GUI. Then in a callback for a button, use the ASSIGNIN function with an argument for assignment into the 'base' workspace to create variables in the base workspace with data from the GUI.
Refer to the documentation for ASSIGNIN at the following link: http://www.mathworks.com/help/matlab/ref/assignin.html

  0 Comments

Sign in to comment.


Paulo Silva
Answer by Paulo Silva
on 10 Jul 2011

Like Prabhakar said use assignin
a=imread(fullpath);
assignin('base','a',a);

  1 Comment

Kyle
on 10 Jul 2011
Thanks.

Sign in to comment.