-1

我有以下代码:

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 是最大代。这应该绘制与选定个体叠加的球体轮廓。在个体的每次迭代中,选择最好的个体,并且这些个体一直持续到达到全局最优。我需要以电影形式展示它,如下所示: 幻灯片 1 幻灯片 1![][1] 幻灯片3 幻灯片4 幻灯片5 幻灯片 6 幻灯片 7

当您运行迭代的每个阶段时,将在随附的幻灯片中指示。这就是我想要做的。请问有什么想法吗?

4

1 回答 1

0

好的,我现在只是从这里复制和粘贴。但是我添加了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的工作目录中将有一个文件。


如果VideoWriter您的 matlab 不支持,您可以使用与此答案(或此处的数学工作文档示例)avifile中提到的相同的用法,如下所示:

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);

编辑

正如这个问题所指出的那样,可能会出现一个问题,即捕获的帧是一个恒定的图像。如果您在 windows 上运行 Matlab,则此问题可能是 windows 与某些图形驱动程序结合引起的,并且可以按照此答案中所述解决。

于 2013-06-02T00:17:56.270 回答