How can I pass variable from GUI to matlab workspace?

The global function is nice, for example:
(in GUI):
global y
y=5;
and then in matlab command window i type global y and it is done.
The way I want to do it is that y is automatticaly printed in workspace without me typing global y in command window. Can it be done?
Thanks.

5 Comments

Rather than using awful and buggy global variables, or buggy and slow assignin, you should use the approaches given in the MATLAB documentation, which describes efficient ways of passing data between callback functions:
Hi, I for one need the variable in global space so I can access it from the command window, so your answer (as well as being slightly rude) is not helpful - what you answered simply isn't the question that was asked.
Jan
Jan on 26 Dec 2017
Edited: Jan on 26 Dec 2017
@Yoni: Global variables are known to cause more troubles then they solve. Therefore experienced programmers consider them as a bad programming practice. Of course your can write a program such that accessing global variables in the base workspace is needed. But then the best solution in a long term view is to change the programming style. Therefore Stephen's answer is really helpful, maybe more than you are aware of currently.
Stephen's words "awful", "buggy" and "slow" concern the global variables and not the asking person. Therefore he is not rude at all. Maybe it helps you to understand Stephen's intention if you take into account, that this topic has discussed hundreds of times already.
In this link, could you please point a little bit more, where should I look at, because this is a long article and I still cannot find a way to pass GUI input data to workspace.
@Nafiz: I do never create variables remotely in another workspace. I consider this as too confusing and prone to bugs. But if you have a really good reason to do this, it is easy:
assignin('base', 'V', data)
Now the variable V is created in the base workspace (accessible in the command window) and set to the value data.
The linked article concerns another problem: Sharing data between callbacks. Then using the base workspace is a bad idea, because it is much better to store the data inside the figure, in the UserData or ApplicationData, e.g. using setappdata or guidata.

Sign in to comment.

 Accepted Answer

don't use semicolon ;
y=5

8 Comments

do you mean like:
global y=5; ?
if do like this error comes up: The expression to the left of the equals sign is not a valid target for an assignment.
no
global y
y=5
you don't need to use global, just type your line command without semicolon
y=5
not
y=5;
Not quite what I wanted. This way it is processed in command window but still not visible in workspace as a variable to work with
what do you need exactly? If you want to use it in other function of your gui, there is better way
I need to have it in workspace because in my GUI there is editbox where I put this variable name and work with it from that point forward...
If it is not in workspace the other function in GUI wont recognize it.
If there is some other way to achive this please post it.
put your data in userdata of any object for eg:
set(handles.editbox,'userdata',y)
to get your variable
y=get(handles.editbox,'userdata')
That is if I want automatically put variable in editbox witch I can do manually it is important that this variable is shown in main matlab workspace.
Masoud
Masoud on 18 Jul 2015
Edited: Masoud on 18 Jul 2015
Thank you
That was really helpful
good luck
Mehrabi

Sign in to comment.

More Answers (0)

Asked:

on 4 Nov 2012

Edited:

on 24 Dec 2021

Community Treasure Hunt

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

Start Hunting!