MATLAB:使用默认名称保存图

Posted

技术标签:

【中文标题】MATLAB:使用默认名称保存图【英文标题】:MATLAB: Save figure with default name 【发布时间】:2016-10-06 14:56:33 【问题描述】:

我正在运行一个生成图形的 matlab 脚本。为了保存这个数字,我使用:

print(h_f,'-dpng','-r600','filename.png')

这意味着如果我每次运行脚本时都不更改文件名,则图形文件名.png 将被覆盖。 有没有办法将图形保存为默认名称,例如untitled.png,然后当脚本运行两次时,它会生成一个新的图形 untitled(1).png 而不是覆盖原来的图形?

【问题讨论】:

为什么不在命令 print 之前创建一个字符串?使用 string = 'filenamexx.png' 然后 print(arg1,arg2,arg3,string) 我强烈建议在文件名中加入一些信息,以便用户识别图像中包含的内容。如果一个文件具有相同的名称,它应该具有相同的信息。必须筛选 filename.png, filename (1).png, filename (2).png, ..., filename (n).png 才能确定文件中包含的内容并不理想。 【参考方案1】:

您可以根据现有文件的数量创建一个新的文件名

defaultName = 'untitled';
fileName = sprintf('%s_%d.png', defaultName, ...
   length(dir([defaultName '_*.png'])));

print(h_f,'-dpng','-r600', fileName)

如果文件不在您当前的工作目录中,请将文件夹路径添加到您的 dir 搜索路径。

这将创建一个 0-index 文件名列表

untitled_0.png
untitled_1.png
untitled_2.png
untitled_3.png
...

您还可以使用tempname 为每次迭代生成一个长随机名称。大多数情况下都是独一无二的,请参阅Limitations 部分。

print(h_f,'-dpng','-r600', [tempname(pwd) '.png'])

如果您不想将文件保存在TEMPDIR 中,则需要输入参数(示例中为pwd

【讨论】:

【参考方案2】:

你可以试试这样的:

for jj=1:N
   name_image=sscanf('filename','%s') ;
   ext=sscanf('.png','%s') ;


   %%do your stuff


   filename=strcat(name_image,num2str(jj),ext);

   print(h_f,'-dpng','-r600',filename)


end

如果您想多次执行脚本(因为您不想使用“for”),只需声明一个变量(例如 jj,它将在脚本末尾递增:

jj=jj+1;

注意不要删除此变量,当您重新启动脚本时,您将使用下一个值 jj 来组成新图像的名称。 这只是一个想法

【讨论】:

以上是关于MATLAB:使用默认名称保存图的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB绘制雷达图/蜘蛛图

R绘图保存 - 机会默认建议的绘图名称

在单元格中使用字符串保存 Matlab 变量

通过命令保存 MATLAB 图

matlab怎么设置工作路径

MATLAB:保存散点图需要太长时间