【问题标题】:IN MATLAB: How to save a graph created inside of a loop for each repetition?在 MATLAB 中:如何保存在循环内为每次重复创建的图形?
【发布时间】:2014-02-07 22:20:27
【问题描述】:

有谁知道如何保存下面的循环为每次重复创建的图表?我想把它保存为pdf格式。 我试着输入:saveas(gcf,{['figure',num2str(i),'.pdf']}) 但它不起作用。

这是我的循环:

i=1;

while i<=4

    x=0:pi/100:2*pi;
    y=sin(x)+i;

    figure
    plot(x,y)

    i=i+1;

    saveas(gcf,'figure.pdf')
end

【问题讨论】:

    标签: matlab loops graph save


    【解决方案1】:

    需要使用strcat()命令来构造文件名:

    I = 1;
    figure
    while I <= 4
        x=0:pi/100:2*pi;
        y=sin(x) + I;
        plot(x,y);
        saveas(gcf,strcat('figure',num2str(I),'.pdf'));
        I = I+1;
    end
    

    我已更改代码以重用相同的图形来渲染绘图并将 i 更改为大写以避免与内置的 Matlab 虚数单位表示混淆。此代码将文件保存在当前工作目录中,覆盖前不检查。

    【讨论】:

      【解决方案2】:

      这就像一个魅力:

      for ii = 1:4
          x = 0:pi/100:2*pi;
          y = sin(x)+ii;
      
          figure
          plot(x,y)
          saveas(gcf,['figure' num2str(ii) '.pdf'])
      end
      

      你的问题是使用大括号{}。它们用于创建(和索引)元胞数组。此外,strcat 不是必需的。您可以简单地将所有内容放在方括号内,就像我在上面所做的那样。在这种情况下,我会说forwhile 更适合。

      【讨论】:

      • @Roberts:例如,如果我的 ii 变量而不是数字,它是字符串值会发生什么?例如,我有另一种情况,其中 ii 存储诸如“一月”、“二月”、“三月”等值。我将如何保存我的图表?我试过:saveas(gcf,[ii '.pdf']),但它不起作用。
      • 行为略有不同,具体取决于输入,请参阅 strcathorzcat。在此示例中,您使用哪一个并不重要。 @Sarah 即使 ii 是您提到的示例中的字符串,它仍然可以工作。
      • 是的,它也适用于字符串。抱歉,是我的错。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多