我需要在MATLAB中绘制并保存到图像文件。这是我在'for'循环中调用的代码:
figure
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
% need to save this plot to image to a file here
现在,这是我用于某些工作的初学者代码,我完全不理解它(例如 - 命令'figure')。有建议使用 saveas 或打印,但我相信我需要处理它们。有人可以帮助我吗?
感谢。
答案 0 :(得分:15)
figure()
是一个返回图形句柄的函数:
f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...
然后您可以使用此句柄保存图:
saveas(f, 'image.png');
请查看tutorials on Handle Graphics了解详情。
scatter
,plot
也会返回点集合的句柄,或者它们绘制的线条或其他内容。
答案 1 :(得分:4)
可能对某些人有帮助的替代解决方案是利用Matlab更新名为gcf
&#34的变量这一事实;获取当前数字句柄"每次创建一个数字。即使没有使用f = figure();
句柄声明命令明确创建句柄,您仍然可以通过调用print()
句柄变量来使用saveas()
和gcf
等命令。例如,这段代码也可能适用于那些没有OP要求在具有唯一标识数字的大for
循环中运行的其他代码:
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
hold off;
saveas(gcf,'filename','png')