在MATLAB中绘图并保存为文件

在MATLAB中绘图并保存为文件,matlab,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 现在,这是

我需要在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”命令)。有人建议使用saveasprint,但我相信我需要它们的手柄。有人能帮我吗

谢谢。

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

f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...
saveas(f, 'image.png');
然后可以使用此句柄保存图形:

f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...
saveas(f, 'image.png');
请查看以了解更多信息


scatter
plot
也会将句柄返回到它们所绘制的点、线或任何东西的集合中。

另一种可能对某些人有所帮助的解决方案是利用以下事实:每次创建图形时,Matlab都会更新一个名为
gcf
的变量“获取当前图形句柄”。即使句柄不是用
f=figure()明确创建的
handle声明命令,您仍然可以通过调用
gcf
handle变量来使用命令,例如
print()
saveas()
。例如,此代码块可能也适用于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')

对谢谢我自己也有办法。gcf将句柄返回到当前的数字。因此,这也有效!优于
saveas
的应该是
options.Format=Format;hgexport(f,'image.png',选项)。这样,导出的图形将与屏幕上的图形完全相同。