为每一代数据创建电影

时间:2013-06-01 18:13:33

标签: algorithm matlab evolutionary-algorithm

我有以下代码:

figure;
contour(X1,X2,f);

hold on

plot(top(1:size(top,1)), 'rx');

修改

    figure;
for i = 1: G
    contour(X1,X2,f);

    hold on

    plot(top(1:size(top,1)), 'rx');
end

注意:G是最大一代。 这应该绘制与所选个体叠加的球体轮廓。在个体的每次迭代中,选择最佳个体并且这些个体继续进行直到达到全局最优。我需要以电影形式显示这个,如下所示: slide 1 slides 1![][1] slide3 slide4 slide5 slide 6 slide 7

当您运行迭代的每个阶段时,在附加的幻灯片中指示。这就是我想要做的。好吗?

1 个答案:

答案 0 :(得分:0)

好的,我现在只是从here复制并粘贴。 但是我添加了FrameRate(每秒),因为您可能希望稍后使用(或询问)。

writerObj = VideoWriter('Your_video.avi');
writerObj .FrameRate = 1; % 1 frames per second animation.
open(writerObj);

fig_h = figure;
for i = 1: G
    contour(X1,X2,f);
    hold on
    plot(top(1:size(top,1)), 'rx');

    frame = getframe(fig_h); % or frame = getframe; since getframe gets gcf.
    writeVideo(writerObj, frame);
end

close(writerObj);

现在,您的工作目录中将有一个Your_video.avi文件。


如果你的matlab不支持VideoWriter,你可以使用与avifile回答(或数学文档示例this)中提到的相同的here,如下所示:

aviobj = avifile('Your_video.avi','compression','None', 'fps', 1);

fig_h = figure;
for i = 1:G
    contour(X1,X2,f);
    hold on
    plot(top(1:size(top,1)), 'rx');

    frame = getframe(fig_h); % or frame = getframe; since getframe gets gcf.
    aviobj = addframe(aviobj, frame);
end

aviobj = close(aviobj);

修改

this question也指出了一个问题,即捕获的帧是一个恒定的图像。如果你在Windows上运行Matlab,这个问题可能是由某些图形驱动程序中的窗口连接引起的,并且可以按this answer中提到的那样解决。