Saving a structure with the title of a plot as name
Show older comments
Hello,
I am currently trying to get get a function that will both save a newly created figure as a .fig-file with it's title being the file name. That works so far.
However, aside from that, the structure that includes all data used for creating the figure should also be saved under the same name. With this second part, I have troubles.
Is there a way to achieve this? It would surprise me if there isn't a way to do this.
function Savefigfun(LPData)
% Savefig saves the newly created figure as a .fig-file named after the
% title of the figure. The saved figure is still editable afterwards.
CurrentFigureTitle=get(gca,'title');
if isempty(CurrentFigureTitle.String)
warning('Error occured.\nCan''t save a figure without title. Please set title before calling [Savefigfun]','class(n)')
warning off
else
savefig(CurrentFigureTitle.String);
save(CurrentFigureTitle.String,"LPData")
end
% created by Claudius Appel.
% https://de.mathworks.com/matlabcentral/profile/authors/16470428-claudius-simon-appel
end
Thank you.
Have a great day & stay safe
Claudius Appel
6 Comments
Geoff Hayes
on 11 Jun 2020
Claudius - please clarify what you mean by With this second part, I have troubles. Are you observing an error? If so, what is it? The line of code
save( CurrentFigureTitle.String,"LPData")
seems reasonable assuming that CurrentFigureTitle.String is a string. I do wonder why you use cell2mat in the previous line of code
savefig(cell2mat(CurrentFigureTitle.String));
(?)
Claudius Simon Appel
on 11 Jun 2020
Edited: Claudius Simon Appel
on 11 Jun 2020
Geoff Hayes
on 11 Jun 2020
When this line of code
save(CurrentFigureTitle.String,"LPData")
is executed, what happens? If there is an error message, then please copy and paste the full error message to this question. Or maybe nothing happens? Does the file already exist and does the code work when you delete the file? Please clarify.
Claudius Simon Appel
on 11 Jun 2020
Geoff Hayes
on 11 Jun 2020
Claudius - it sounds like CurrentFigureTitle.String is a cell array and so when you access the first element with {1}, you get the string that you expect. Alternatively, you could probably do
save(char(CurrentFigureTitle.String),"LPData")
to get the same result.
Claudius Simon Appel
on 11 Jun 2020
Accepted Answer
More Answers (0)
Categories
Find more on Interactive Control and Callbacks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!