Plot File Naming Prohibits Periods?

In order to save my plot, I have this excerpt of code at the end of my script. Why does this not work? From my debugging, it seems to not like the 4.2f Kn value because of its period. If I manually create str_saveas without the period, it works. Periods are valid filename characters in Windows files though. Why wouldn't Matlab permit this file naming convention? Or perhaps there's another way I should do this?
Kn=0.05;
str_saveas=sprintf('HW_4_PtA_Kn=%4.2f_FirstOrder',Kn);
saveas(figure(1),str_saveas,'fig');
Thanks, M Ridzon

 Accepted Answer

The saveas() code detects the .??_FirstOrder as the file extension so it does not add .fig as an extension. It sees the 'fig' format specification so it passes the file name to saveasfig() which passes it to savefig() . But savefig() expects .fig to be present somewhere in the name.
Would it perhaps be acceptable to use
str_saveas=sprintf('HW_4_PtA_Kn=%4.2f_FirstOrder.fig',Kn);

9 Comments

Unless it's documented somewhere, the method I tried appears to uncover a software bug. Hmm. There's no reason to assume a filename cannot have a period, again unless it's documented somewhere in the Matlab Help, which I'm not aware of.
The answer you provided works fine. Thanks!
"If the specified file name does not include a .fig file extension, then MATLAB appends the extension. savefig does not accept other file extensions."
"'fig' — Save the figure as a MATLAB figure file with the .fig extension. "
So it is sort of implied, but Yes, it does contradict the part of the documentation that says that the file extension does not need to match the format.
I submitted a report about the wording needing to be clearer for file extension for fig format.
From what I can tell, the crux of the problem is that you cannot include periods in a filename, or else the script bombs out. I understand that the code may be looking for a certain file extension, but in my mind that's a side issue. Periods are legal filename characters in a Windows system, so to me it would seem legal to use in a Matlab figure name. And to that point, I think the bug needs worked out so periods can be used or the documentation should clearly state "no periods allowed." That's my $0.02. :-)
the code test is specifically about whether.fig appears somewhere in the string, not whether there are extra dots in the name. The test would have passed if the name were abc.fig23.72_xuz. Indeed I think it would have worked if the .fig were in the directory name. The test in savefig is not as robust as it could be.
Are you sure it is not the equals sign that is causing the problem? I don't think that is a valid character in a filename.
Matthew
Matthew on 1 Nov 2017
Edited: Matthew on 1 Nov 2017
@Les: I'm sure it is not the equals sign. Such character is valid in Windows filenames. And when I test Walter's initial suggestion, which has an equals sign, it works successfully.
@Walter: Thanks again for the update. Sounds like we have a clear understanding of the issue and hopefully the developers can fix the algorithm to address it.
I think the developers will simply clarify the description of 'fig' format to say more clearly that it requires .fig file extension.

Sign in to comment.

More Answers (0)

Categories

Find more on Creating, Deleting, and Querying Graphics Objects 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!