2014-03-25 210 views
1

让我们考虑下面的代码模拟电影中的matlab

function []=AR_simulate(p,fs); 
B=xlsread('data_generations1','A1','g8:g301'); 
for k=1:1:p 
    [pxx,f]=pyulear(B,k); 
    plot(f,pxx); 
    F(k) = getframe; 
end 
movie(F,100); 
end 

其中用于顺序动画具有不同顺序给出B载体,即功率谱密度的开始在k = 1和终止于k = P,fs是采样频率。现在我想要下面的东西:我想保存每张图片的某处,但是我想在每张图片中包含参数k,例如在k = 1时,有这张图片,在k = 2时,出现了不同的图片等等请帮助我如何做到这一点在cycle.thanks提前

回答

1

这将会把每帧的标题为k=1k=2等,以及将打印每帧为EPS文件Frame1.epsFrame2.eps

function []=AR_simulate(p,fs); 
B=xlsread('data_generations1','A1','g8:g301'); 
for k=1:1:p 
    [pxx,f]=pyulear(B,k); 
    subplot(1,2,1) 
    plot(f,pxx); 
    F(k) = getframe; 
    title(['k=' num2str(k)]) 
    subplot(1,2,2) 
    % 2nd plot 
    print('-depsc2',['Frame' num2str(k) '.eps') 
end 
movie(F,100); 
end 

您也可以使用text而不是标题将文本放置在图的任何位置。

+0

它会保存在某个地方吗? –

+0

也请我怎么做,以便当k = p时,停止电影? –

+0

它会保存在您当前的工作目录中。我不确定如何停止电影,但我确定如果您检查文档,它将是显而易见的。 – David

1

默认情况下,具有零输入参数的getframe基于当前的捕获一帧。如果您想根据图形捕捉框架,包括标题和轴标记,则需要执行getframe(gcf)。或者,使用@David建议的text将标签放置在您捕获的坐标轴上。

关于保存图像,你可以getframe后用frame2imimwrite,在循环:

im = frame2im(F); 
imwrite(im,sprintf('im_k%03d.png',k)) 

或者到帧保存到影片中,使用类,并在每个迭代上调用writeVideo

+0

感谢您的回复 –