失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab中不同数据点的动态显示并生成gif图片

matlab中不同数据点的动态显示并生成gif图片

时间:2018-09-04 17:52:21

相关推荐

matlab中不同数据点的动态显示并生成gif图片

主要代码如下

在你生成数据的for循环中添加下述代码,即可生成数据动态gif图片。

frame=getframe(gcf);imind=frame2im(frame);[imind,cm] = rgb2ind(imind,256);if i==1imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);elseimwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);end

但上述代码会保留原来的数据继续画图,如果你要画的是数据变化的图,在你的plot函数加个

cla;

这样就可以在画入gif时删除上一次的数据其中i为对应for循环起点,以下述代码为例:

for i = 1:100%计算适应度值(函数值)objvalue = cal_objvalue(pop);fitvalue = objvalue;%选择操作newpop = selection(pop,fitvalue);%交叉操作newpop = crossover(newpop,pc);%变异操作newpop = mutation(newpop,pm);%更新种群pop = newpop;objvalue = cal_objvalue(pop);fitvalue = objvalue;%寻找最优解[bestindividual,bestfit] = best(pop,fitvalue);x2 = binary2decimal(bestindividual);x1 = binary2decimal(newpop);y1 = cal_objvalue(newpop);%if mod(i,10) == 0pause(1);figure(1);cla;fplot(@(x)4.*cos(2.*x).*sin(6.*x)+10.*sin(5.*x).*sin(3.*x)-3.*abs(x-5)+10,[0 10]);hold on;plot(x1,y1,'*');title(['迭代次数为n=' num2str(i)]);frame=getframe(gcf);imind=frame2im(frame);[imind,cm] = rgb2ind(imind,256);if i==1imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);elseimwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);end%endend

主要是两个点:1.for循环的i对应if的i值。2.plot函数上加cla;

此代码只是函数的一个部分,并不能运行,全代码来自:/yh18783996170/article/details/107175969

运行效果如下:

如果觉得太快了可以修改pause函数里的数字,表示延迟多少秒。

如果觉得《matlab中不同数据点的动态显示并生成gif图片》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。