【问题标题】:save figures in matlab during loop在循环期间将数字保存在matlab中
【发布时间】:2013-04-15 01:40:46
【问题描述】:

如果可以保存循环期间出现的数字,我很感兴趣。
例如,我创建了一些随机矩阵,

 r=rand(8,5)


r =

0.8147    0.9575    0.4218    0.6787    0.2769
0.9058    0.9649    0.9157    0.7577    0.0462
0.1270    0.1576    0.7922    0.7431    0.0971
0.9134    0.9706    0.9595    0.3922    0.8235
0.6324    0.9572    0.6557    0.6555    0.6948
0.0975    0.4854    0.0357    0.1712    0.3171
0.2785    0.8003    0.8491    0.7060    0.9502
0.5469    0.1419    0.9340    0.0318    0.0344

现在如果我使用这条线

plot(r(1,:))

我得到下图

我的问题是,如果我使用循环

for i=1:8
   plot(r(i,:))
end

它向我显示了一个行图,但它颂歌不做循环,所以我可以在 matlab 中逐步显示所有 8 个数字。例如,间隔可能是 10 秒,据我所知,使用了函数 movie,也使用了 getframe,或者我可以在循环中保存数字吗?
另外,我知道 imsave 或类似的东西。我认为最好保存在某个地方,所以如果我可以这样使用

imsave(plot(r(i,:))

【问题讨论】:

    标签: matlab image-processing matlab-figure


    【解决方案1】:

    使用getframe捕获当前图形句柄的内容

    fh = figure
    % ...
    for ii = 1:8
        figure( fh ); % focus on figure
        plot( r(ii,:) );
        frm = getframe( fh );
        % save as png image
        imwrite( frm.cdata, sprintf( 'current_frame_%02d.png', ii ) );
    end
    

    PS
    最好not to use i as a variable in Matlab

    【讨论】:

    • 它写在哪里?在这个 m 文件正确的文件夹中?
    • 写入pwd的输出。
    • @dato 它将 png 图像写入您当前的工作目录。
    • 感谢朋友,对我很有帮助,现在我正在测试它
    • 我的朋友还剩 1 分钟,这个网站需要几分钟才能接受
    【解决方案2】:

    我认为您的问题有多种解决方案:

    • 使用pause函数,可以暂停一下,这样你就可以看到你的身材了。
    • 在新图形中打印每个图像。为此,只需将 figure(i) 放入您的 for 循环中即可。
    • 或者使用print函数保存图片。

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      如果您的意思是要使用循环显示所有图,可以执行以下操作:

      for ii=1:8
          figure();
          plot(r(ii,:));
      end
      

      【讨论】:

        猜你喜欢
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 2021-08-01
        相关资源
        最近更新 更多