我有以下代码:
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是最大一代。 这应该绘制与所选个体叠加的球体轮廓。在个体的每次迭代中,选择最佳个体并且这些个体继续进行直到达到全局最优。我需要以电影形式显示这个,如下所示:
当您运行迭代的每个阶段时,在附加的幻灯片中指示。这就是我想要做的。好吗?
答案 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中提到的那样解决。