2

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

 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,:))
4

3 回答 3

5

用于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
最好不要i在Matlab中用作变量

于 2013-04-22T08:13:57.263 回答
1

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

  • 使用该pause功能,它可以暂停,以便您可以查看您的身材。
  • 以新图形打印每个图像。要实现这一点,只需放入figure(i)您的for循环中。
  • print或使用该功能保存图像。

希望能帮助到你!

于 2013-04-22T08:15:37.327 回答
1

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

for ii=1:8
    figure();
    plot(r(ii,:));
end
于 2013-04-22T08:16:30.150 回答