如何在Matlab图中的每一代for循环中创建电影

时间:2013-05-30 02:00:36

标签: matlab matlab-figure eda

我想将球体函数绘制为曲面或等高线图,以及最佳个体的位置和适应度值,这些值由通过叠加的高斯分布生成的数据的球函数来评估。情节会在每一代都有所改变,所以我会看电影。此外,在另一个图中,我想绘制球体函数的轮廓与由高斯分布生成的整个总体叠加,其中保留的拟合个体用红色着色。这代代相传应该是另一部电影。

这基本上是分布算法(EDA)估计的实现。有谁知道怎么做?

修改

K= 4 
for l = 1 : K 
contour(X,Y,ph); 
hold on 
plot(bestId, 'rx'); 
end 

上面的代码应该叠加等高线图和BestId。对于l的每个循环,生成bestId并与等高线图叠加。这一代BestInd应该发生在每一个l。但是在1到4代的bestId中,有一个是最好的,我们应该在四代之后与等高线图叠加。现在我希望这一代是一部从1到4的到达迭代的电影,这样我就可以看到bestId是如何生成的,直到达到最佳(最佳)效果。 这就是我在matlab中的电影所指的意思。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

要创建反映数字变化的影片,我正在使用课程avifile和功能getframe()以及addframe()

的组合

这是一个例子

aviobj = avifile('example.avi','compression','None');

t = linspace(0,2.5*pi,40);
fact = 10*sin(t);
fig=figure;
[x,y,z] = peaks;
for k=1:length(fact)
    h = surf(x,y,fact(k)*z);
    axis([-3 3 -3 3 -80 80])
    axis off
    caxis([-90 90])

    F = getframe(fig);
    aviobj = addframe(aviobj,F);
end
close(fig);
aviobj = close(aviobj);

您可以在此处找到更多信息

http://www.mathworks.nl/help/matlab/ref/avifile.html

http://www.mathworks.nl/help/matlab/ref/movie.html

http://www.math.canterbury.ac.nz/~c.scarrott/MATLAB_Movies/movies.html

----------------- 在评论讨论后编辑 ---------------- -

pm89在评论中提出了另一种方式。 VideoWriter类看起来更现代,更新。使用示例可以在下面的页面末尾找到

http://www.mathworks.nl/help/matlab/ref/videowriterclass.html