要从matlab里批量导出图片但是每一次plot图片都要显示,数量很多的时候一个个叉掉很麻烦,有没有什么好的办法可以批量导出而且图片不显示呢?
从matlab中文论坛里找到了两种方法:
方法1 先plot
再用set(..'visible','off')
语句
for ii=1:10
h=figure(ii);
x=0:0.01:1;
y=sin(x);
plot(x,y);
set(h,'visible','off');
str=sprintf('figure(%d)',ii);
saveas(h,str,'jpg');
end
方法2 在plot
以前使用figure('visible','off')
语句
for ii=1:10
x=0:0.01:1;
y=sin(x);
figure('visible','off');
h=plot(x,y);
str=sprintf('figure(%d)',ii);
saveas(h,str,'jpg');
end
对比
第一种方法因为使用了figure语句在前,所以输出的时候图片会一直闪烁(出现一个figure就对其不可见),观感比较不好。
第二种方法直接在plot之前就对figure不可见,没有出现闪烁的情况。
综上所述,第二种方法更佳。
然而,第二种方法也是有缺点的!
使用了visible只是让图片不显示,但是图片还是在那里的呀。图片数量很多的时候可能会占据大量的内存。
为了解决这个问题,这里想到的一个办法就是在plot
以后添加close
语句把图片关掉。这样在第二种方法的基础上我们就有了第三种方法。
方法3 plot
以后使用close
删除图窗
for ii=1:10
x=0:0.01:1;
y=sin(x);
figure('visible','off');
h=plot(x,y);
str=sprintf('figure(%d)',ii);
saveas(h,str,'jpg');
end
close all hidden;
这样就很完美啦~~~
参考资料
1.matlab作图时,如何只保存图像而不显示图像https://www.ilovematlab.cn/thread-54621-1-1.html
2.matlab绘完图后可以不弹出figure而直接保存吗?https://www.ilovematlab.cn/thread-202089-1-1.html
3.matlab help文档-closehttps://ww2.mathworks.cn/help/matlab/ref/close.html?searchHighlight=close&s_tid=srchtitle