Matlab 动态心形线GIF图

正好520要到了,学到了一个用MATLAB自动保存GIF动态图的心形线代码,贴给大家,一起学习。拿去表白,钢铁直男的浪漫。。。

clc;
clear;
a=20;
x=-2:0.01:2;

figure(1);
set(gcf,'position',[0,0,800,600],'color','w');
for i=1:200;
    str_title = strcat('\color{red}a=',num2str(a));
    y=abs(x).^(2/3)+(0.9*sqrt((3.3-x.^2))).*sin(a*pi*x);
    a = i/10;
    figure(i);
    
set(gcf,'position',[0,0,800,600],'color','w');
p1=plot(x,y,'r','LineWidth',3);
hold on;
title('\color{red}f(x)=x^2^/^3+e/3*(π-x^2)^1^/^2*sin(a*π*x)','fontsize',15);
text(-0.2,2.3,str_title,'FontName','Times New Roman','FontSize',20);
xlim([-2 2]);
ylim([-1.5 2.5]);
frame = getframe(gcf);
    im=frame2im(frame);
[I,map]=rgb2ind(im,256);

if i==1
    imwrite(I,map,'心.gif','gif','Loopcount',Inf,'DelayTime',0.05);
    %imwrite函数将动图保存为GIF
else
    imwrite(I,map,'心.gif','gif','WriteMode','append','DelayTime',0.05);
end
close(figure(i));
end

几个重要函数:
1、getframe:捕获坐标区或图窗作为影片帧。
2、gcf:返回当前figure的句柄。
3、frame2im:返回与影片帧关联的图像数据。输出一个三维矩阵。
4、rgb2ind:将rgb图像转化成索引图像。
5、imwrite,当写第一帧的时候,使用Loopcount的inf,当其他帧的时候,使用WriteMode的append追加。

实现效果:

为了上传,gif图片有一点压缩,显示效果可能没原图好

你可能感兴趣的:(Matlab 动态心形线GIF图)