【问题标题】:Plotting and Saving as File in MATLAB在 MATLAB 中绘图和另存为文件
【发布时间】:2011-10-01 02:49:04
【问题描述】:

我需要在 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,但我相信我需要它们的句柄。有人可以帮我吗?

谢谢。

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

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

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

    saveas(f, 'image.png');
    

    查看tutorials on Handle Graphics 了解更多信息。

    【讨论】:

    • 是的。谢谢。我自己也想通了。 gcf 将句柄返回到当前图形。所以,这也行得通!
    • 优于saveas 应该是options.Format = format; hgexport(f, 'image.png', options);。这样,导出的图形将与您的屏幕上一模一样。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多