在MATLAB中绘制和保存为文件

时间:2011-10-01 02:49:04

标签: matlab

我需要在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 打印,但我相信我需要处理它们。有人可以帮助我吗?

感谢。

2 个答案:

答案 0 :(得分:15)

figure()是一个返回图形句柄的函数:

f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...

然后您可以使用此句柄保存图:

saveas(f, 'image.png');

请查看tutorials on Handle Graphics了解详情。

scatterplot也会返回点集合的句柄,或者它们绘制的线条或其他内容。

答案 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')