如何模拟电影?

时间:2014-03-25 05:52:30

标签: matlab loops signal-processing

让我们考虑以下代码(fs是采样频率)

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

使用不同的顺序(即从Bk=1的动态,为给定k=p向量的功率谱密度设置动画。

现在我想在某处保存每张图片,但在每张图片上我想要包含参数k,例如在k=1有这张图片,在k=2有不同的画面等等。

2 个答案:

答案 0 :(得分:1)

这会将每个框架的标题设为k=1k=2等,并将每个框架作为eps文件打印到Frame1.epsFrame2.eps等。< / p>

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代替标题将文字放置在图表的任何位置。

答案 1 :(得分:1)

默认情况下,带有零输入参数的getframe会根据当前捕获一个帧。如果要根据图形捕获帧,包括标题和轴刻度,则需要执行getframe(gcf)。或者,使用@David建议的text将标签放在您捕获的轴上。

关于保存图片,您可以在imwrite之后的循环中使用frame2imgetframe

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

或者要将帧保存到电影中,请使用VideoWriter类并在每次迭代时调用writeVideo