在循环期间保存matlab中的数字

时间:2013-04-22 08:10:55

标签: matlab image-processing matlab-figure

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

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

我得到以下数字

enter image description here

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

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

它显示了一个行图,但它没有循环,所以我可以在matlab中逐步显示所有8个数字。例如,间隔可能是10秒,因为我知道使用了函数movie,也使用getframe,或者我可以将数字保存在循环中吗?
此外,我知道imsave或类似的东西。我认为更好的是保存在某处,所以如果我能像这样使用

imsave(plot(r(i,:))

3 个答案:

答案 0 :(得分: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
最好是not to use i as a variable in Matlab

答案 1 :(得分:1)

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

  • 使用pause功能,可暂停一下,以便您查看自己的身材。
  • 以新图形打印每张图像。要实现这一目标,只需将figure(i)放入for循环。
  • 或使用print功能保存图像。

希望它有所帮助!

答案 2 :(得分:1)

如果您想通过循环显示所有绘图,则可以执行以下操作:

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