How to export from a GUI (.exe) to MATLAB workspace?

2 views (last 30 days)
Hi, Can anyone guide me how to export a created array in a GUI(.exe) to the MATLAB '*base*' workspace? Note: by GUI(.exe), I mean I've created a GUI .exe file using '*deploytool*'. If I run my GUI .m file (or .fig file using 'guide') I can use '*assignin*' function to do this export. But the mention function does not work if I run my .exe GUI. Should I run MATLAB from .exe GUI?
Thank you so much

Accepted Answer

Walter Roberson
Walter Roberson on 13 Jun 2011
The .exe has its own base workspace that you can assign in to all you like, but it will vanish as soon as the executable ends -- just like happens if you were to do something in MATLAB and then exit MATLAB.
Running MATLAB from the .exe wouldn't help much, in the sense that the .exe would not be able to make assignments in to the workspace of the live MATLAB.
The .exe could save() variables in to a .mat file, and you could load() the .mat file.
  7 Comments
math98
math98 on 14 Jun 2011
Thanks Gerd,
but I should make exe of my code, then share it with others.
Gerd
Gerd on 14 Jun 2011
Of course you can make an .exe out of your code and share the program with other users. When all user want to share data (results, input vectors) I would use the load and save functions.
It is the same as you share and .xls ord .doc file

Sign in to comment.

More Answers (2)

math98
math98 on 14 Jun 2011
A Mathworks staff gave an answer here, but I don't know why it disappeared. (anyway thanks) Noting his answer, about reasons of making an exe file, I should explain that I make the exe just so that the main code is not accessible. As well I want to see the result in a live MATLAB, assume for a post-processing, just clicking from that GUI. The method you suggest, I first thought about it. But it's really not interesting to do that, WHILE IT'S POSSIBLE TO LOAD THE RESULTS IN THE LIVE MATLAB AUTOMATICALLY, NOT BY AN ADDITIONAL COMMAND! (sure if it's possible!)
  3 Comments
Chirag Gupta
Chirag Gupta on 14 Jun 2011
I must have deleted my previous answer by mistake. A possible solution for your unique case might be to use actxserver (actxGetRunningServer) [on windows only]. I think this might work, but I haven't really tried this.
Chirag Gupta
Chirag Gupta on 14 Jun 2011
Although, I agree with Walter that pcode is correct/better solution

Sign in to comment.


math98
math98 on 14 Jun 2011
OK, I'm satisfied you software engineers cannot suggest me a better method.. :(
but pcoding is not my choice. I must still consult. Do you offer your softwares along with all the codes and installation contents separately?? I want an single exe file!!
Thanks for the comments
  4 Comments
math98
math98 on 14 Jun 2011
I was gradually satisfied :)
Chirag,
a) why you advertise MATLAB? maybe someone wants to make an exe file out of his/her codes, just because it's the conventional way of software distribution. (let's assume I've prepared a software!)
b) I'm really scared with even these methods names!! in this case, I must employ a soft engineer! I'm just a student.
c) I was thinking about zipping the files. (.m and .fig)
but could you please tell me how to create a self extracting exe file and script it? what means scripting it so that to install in the MATLAB path? from where should I know the MATLAB path on another machine?
Walter,
I knew the point you mentioned. But, so that you seem to be a professional in MATLAB, like Chirag, why there is no inverse option to have all the codes in a single fig file?
I mean instead of exporting the fig file to a .m file, we could have a fig file without any attached .m file. I think it has a better view. (at least MATLAB editor is not opened.)
Anyway, I should remind that exporting my fig file, a .mat file is also created that GUIDE warns it must be beside the .m file while running!
Thanks guys for the time you spent
Walter Roberson
Walter Roberson on 14 Jun 2011
MATLAB has communications channels available, but you have put on tight enough restrictions as to how you want them to work that it is not possible to access the channels in your design. Communication has to be specifically enabled in almost all software systems. For that to happen, *some* code has to run in the context of the program that starts up the second program. The setup might only take a couple of statements, but you have put on restrictions that do not allow _any_ execution in the starting program: you insist on a single executable that runs in a different context.
I have not looked at the details of how .fig files are implemented. I have some ideas as to why a stand-alone .fig would likely not work, but I would have to test those ideas.
Note: Chirag works for Mathworks, but I am an experienced software developer who uses MATLAB as a customer; I have never had access to the internal design of MATLAB and I have never had access to Mathworks policy or planning.

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!