FIG2MFILE - save a figure as an executable mfile
fig = figure number of figure to be saved
'myfig' = desired mfile name
(1) Most plots and images can be saved. Most data types can now be handled, including multi-level and multi-dimensional structs and cell arrays. In tests, GUIs can be handled; however, saving a GUI figure window does cannot save its associated callback functions and cannot preserve the numerical value of handles (since they are regenerated at the each figure creation).
(2) To answer the inevitable question, this function will be needed by authors who don't want to include a separate saved figure file in a release of their software, but would rather include the figure generation in their code (e.g. for a compiled software release).
(3) Complex figures can take a few minutes to reduce to m-file format. Disk usage greatly increases from fig-file format as one might expect. (Incidentally, zip-file compression reduces the size to roughly comparable with fig-file size.)
(4) The generated mfile contains a single function ("drawfig") which can be moved into other code as needed.
(5) The created function returns a handle to the figure when it is executed.
(6) ver 1.0: initial writing, Michael Kleder, July 2005
(7) ver 2.0: accept new & multi-level datatypes, Michael Kleder, Oct 2005
Michael Kleder (2020). FIG2MFILE - Save a figure as an M-file (ver 2.0) (https://www.mathworks.com/matlabcentral/fileexchange/8000-fig2mfile-save-a-figure-as-an-m-file-ver-2-0), MATLAB Central File Exchange. Retrieved .
I cannot get it to work.
Throws the following message and bails out!
Matlab figure data requires 4065932 bytes. (M-file will be larger.)
??? Error using ==> uitools.uimode.modeControl>localModeKeyPressFcn
Too many output arguments.
Error in ==> fig2mfile>show at 100
fprintf(fid,[' ' num2str(s(row,col),18)]);
Error in ==> fig2mfile at 57
The output m file is incomplete and ends abruptly.
does not work with multiple plots with legend.
Thank you for asking. The 'Generate M-File' selection under a figure's 'File' menu creates an empty skeleton of the figure containing no actual data, images, annotations, or figure handle. This function actually reproduces the entire figure, returns a handle, and can be invoked automatically (without a mouseclick each time).
Can you explain the difference between your tool and the 'Generate M-File' submenu which can be found in each figure's menu?
For anyone who is interested, this function works by performing self-recursive function calls down the figure's handle graphics structure, and recording what it finds in text form.
Handles much more complicated figures including GUIs and figures containing multi-level and multi-dimensional structs and cell arrays.
Function definition line had been inadvertently commented out.