【问题标题】:Saving figure with current file name in MatLab在 MatLab 中以当前文件名保存图形
【发布时间】:2014-07-25 14:50:09
【问题描述】:

我有一个脚本,它一次从我当前的工作目录中提取一个文件并绘制指定的信息。我想将每个图保存为 jpeg(tiff 也可以),并带有它正在绘制的文件的名称。我有大约 3000 个文件,因此我正在寻找一种自动化的方式来执行此操作。

我认为如果放在 for 循环的末尾这可能会起作用:

saveas(gcf, '   ',jpg)

我不知道在文件名的引号中放什么。

示例

data1.mat中的数据图应该保存在文件data1.jpeg

【问题讨论】:

  • 你能提供你的代码的一部分吗?但函数getframe 可用于将图像检索到图形中。所以之后只需使用imwrite 保存即可。

标签: matlab matlab-figure


【解决方案1】:

因为你的脚本已经有了文件名的信息(否则它不能打开文件和读取数据),你可以用'.jpg'扩展文件名并将这个字符串传递给saveas函数。文件名'hello'的演示:

>> filename = 'hello'
filename =
hello
>> picname = [filename, '.jpg']
picname =
hello.jpg
>> a = figure
a =
 4
>> saveas(a, picname)
>> ls
hello.jpg

【讨论】:

  • @TiffanyG 没问题。如果您能接受最有帮助的答案,那就太好了。
【解决方案2】:

如果loadedFileName 是您刚刚加载的文件的名称(也可能是)路径,那么您可以执行以下操作以使用相同的文件名保存 jpeg

% get the path, name and extension of the file just loaded
[path, name, ext] = fileparts(loadedFileName);

% grab what you want to create the filename of the jpeg to save
jpegToSaveFileName = [name '.jpg'];   % use path if you want to save to same directory

% save the figure as a jpeg
saveas(gcf,jpegToSaveFileName,'jpg');

试试上面的方法,看看会发生什么。如果您需要为文件名添加路径,请执行以下操作

jpegToSaveFileName = fullfile(path, jpegToSaveFileName);

试试上面的方法,看看它是否能满足你的需要!

【讨论】:

  • 这正是我所需要的。在脚本的早期,我们将文件名定义为 for 循环中的下一项,所以我使用了你放置“loadedfilename”的地方,它完美地工作:for jj=1:length(allfiles) % clf;文件名 = allfiles(jj).name;输入文件 = fopen(文件名);然后在 for 循环结束时,我使用了您的代码。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 2011-06-15
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多