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

 Réponse acceptée

Walter Roberson
Walter Roberson le 31 Oct 2017
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 commentaires

Matthew
Matthew le 31 Oct 2017
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!
Walter Roberson
Walter Roberson le 31 Oct 2017
"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.
Walter Roberson
Walter Roberson le 31 Oct 2017
I submitted a report about the wording needing to be clearer for file extension for fig format.
Matthew
Matthew le 31 Oct 2017
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. :-)
Walter Roberson
Walter Roberson le 1 Nov 2017
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.
Les Beckham
Les Beckham le 1 Nov 2017
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 le 1 Nov 2017
Modifié(e) : Matthew le 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.
Matthew
Matthew le 1 Nov 2017
@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.
Walter Roberson
Walter Roberson le 1 Nov 2017
I think the developers will simply clarify the description of 'fig' format to say more clearly that it requires .fig file extension.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by