循环输出plot结果图,出现报错“但其类型是 matlab.ui.figure。”

 想画几条线,然后循环输出保存图片。但是使用imwrite函数时,出现报错说“DATA应该是以下类型之一,但其类型是 matlab.ui.figure。”

一查定义的图片名fig是Figure格式。

回去看代码,问题出在:

 查看mathworks的文档:控制图窗窗口的外观和行为 - MATLAB- MathWorks 中国

 fig被定义成figure格式了。

所以添加代码如下:

frame = getframe(fig); % 获取frame
img = frame2im(frame); % 将frame变换成imwrite函数可以识别的格式

然后再

imwrite(img,filename,'jpg');

就可以了。

END!

彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  彩蛋  

还有一种就是直接用saveas保存图片,保存方法如下:

for i = 1:n
    plot(...);
    saveas(gca,num2str(i),'jpg');
    close(gcf);
end

for循环里一定要有:close(gcf);  否则从第二幅图片开始就会重叠。

但都说saveas和imwrite函数不同,搜了搜它俩的区别,引用别人总结的话如下:

两个命令都可以用来保存图像,区别在于
1、背景色:saveas保存的图像 背景色自动设置为白色,imwrite保存图像为所见即所得
2、图像大小: saveas无视你设置的图像大小,按默认保存,imwrite保存所见即所得

但我用着两种方法生成结果,差别在哪,有人知道的话还请告诉我

1.saveas的结果:

 2.imwrite的结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值