Running an m file by clicking on a pushbutton in GUI

26 Ansichten (letzte 30 Tage)
Henry
Henry am 28 Jun. 2013
Kommentiert: Walter Roberson am 28 Jan. 2021
Hiya,
I'm making a GUI using GUIDE and I want it to run a different file when i press a push button.
The file itself runs a few other files when it's run and gives an output of a series of variables with their values.
I was hoping I would be able to load and display these values in the GUI by running the file, and then be able to edit the values (still in the GUI).
Then, by pressing another pushbutton the GUI calls the file to calculate it's outputs using the updated variables and displays it.
I've tried using
run('myfile.m')
in the pushbutton callback, but the workspace isnt updated, so I'm not sure if it's actually being run or not.
alternatively I could call the GUI from the file, but I don't know how to do this either
Any help would be brilliant
Thanks
  6 Kommentare
Amit Patankar
Amit Patankar am 28 Jan. 2021
@Walter Roberson I am using a push button in App designer and in it's callback, I have written a Run command to run *.m files.
Just like when a *.m file is ran in command window of MATLAB and it loads all parameters into workspace, I expect that the push button should do it for me.
Walter Roberson
Walter Roberson am 28 Jan. 2021
Well, it is loading the parameters into the workspace -- the workspace of the callback function.
As I wrote above:
Do not use run() to try to work with variables in the base workspace: use evalin('base') for that.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

David Sanchez
David Sanchez am 28 Jun. 2013
To run a m-file from a GUI, just insert the name of the m-file in the pushbutton callback function. It works the other way around. To open a GUI from a m-file, just type the name of the GUI in the m-file.
If you want your GUI to display values calculated within the m-file, you could define variables as global in both the GUI and the m-file.
If what you want is to display/send values to the workspace, you could use
assignin
from both your GUI or you m-file.
type
help assigin
or
doc assigin
in the command window to get all the information about the assigin built-in function.
  4 Kommentare
Henry
Henry am 28 Jun. 2013
I've managed to solve this now, thank you for the help
Minhaz Bin Malik
Minhaz Bin Malik am 9 Jun. 2014
Hello Henry, I am having the same problem like yours. Could you please share, how you eventually managed?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Jan
Jan am 28 Jun. 2013
You can obtain the results created by your function simply by catching them as outputs:
Result = myfile;
This is completely the same as for calling sin(0.1), where you will store the results in an output also.
Any kind of remote controlled assignments of variables cannot compete with this clean and clear method.
  4 Kommentare
Walter Roberson
Walter Roberson am 10 Feb. 2019
motevalizadeh comments
right
Margarita Diaz-Cortes
Margarita Diaz-Cortes am 13 Feb. 2020
Your reply just made my day, thank you so much!

Melden Sie sich an, um zu kommentieren.


Tonghui Zhang
Tonghui Zhang am 9 Mai 2019
Hi guys,
I am confronted with a similar problem. When I use run command in my GUI, it works well. But after I generated an exetutable program(exe), the run function report that the specified m file cannot be found. When I use a constant path to the run function. It reports that the m script cannot be executed. But the problem is that I can run it very well in guide. Are there anyone can help me?
Thanks a lot
  2 Kommentare
Walter Roberson
Walter Roberson am 13 Mai 2019
In another post we discussed that run is not permitted in compiled executables. You indicated that you were able to eval instead
Tonghui Zhang
Tonghui Zhang am 13 Mai 2019
Yeah,
This is a previous question.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Desktop finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by