Sometimes you create MATLAB functions that take ages to run (more than 10 minutes). You want to be able to pause every now and then, by clicking a "CTRL+P" or something like that, make sure all the values are ok, and then continue running from the same spot. If you tried "CTRL+C", you know it's not working well. So, untill such an option will exist, I wrote a simple example to show how you can use a PushButton and a guarded breakpoint to do so.
Run the file, by executing "myFunc(1)".
You will see a button pop up. Every time you press it, it will halt the function's execution and allow you to view the progress of the code.
Pressing F5 will continue the run.
You can use this as a template for your specific needs, simply modify and use.
PLEASE NOTE: In MATLAB version R2016a this feature is already a part of the editor, so you don't really need this submission anymore. Hooray for MathWorks development team for adding this feature!
I'm now running a script. It takes a long time. I want to pause it whenever I want and see the partial result. If the partial result is not good enough, I want it to continue running. Can I do it with this file? To be honest, I'm a little confused with this file. Could anyone please explain it in detail? I appreciate it a lot!
Thanks for the comment, I've updated the submission to reflect this.
Btw, interesting point:
Running on R2015b, the code "myFcn(1)" takes about 1000 seconds to run.
The same code on R2016a takes 2 seconds!
Seems like there was something strange with 15b and was fixed in 16a.
Works great. Like Stefano suggested, using close(h) while running functions is better than clear h to close the pause button.
Works well. It would be nice if the script would resume after pressing the button a second time (e.g. execute “dbcont”). Thanks for sharing it.
Really useful! Thanks!
The last lines of myFcn(u) should actually be:
So that the "pause" plot window is closed and h is released.
Works like a charm :)
Good suggestion, Jan. I've modified the files so they reflect this.
What about calling KEYBOARD in the callback of the button? Then there is no need for a GLOBAL variable or setting a breakpoint. See "help keyboard".
- Changed the "clear(h)" command to "close(h)" in order to close the button when the simulation finishes.
Removed unnecessary FLAG checks.