用MATLAB绘制模拟圆周率的GIF动图

MATLAB 绘制GIF动图

2021-8-19

基本思想,先生成多张静态图,然后组合成gif图

最后结果如下,是由五张图快速出现而形成,点数分别为[500,1000,2000,5000,]

Step1:我们需要在图上画出这套1/4圆的线和随机的点,先以500个点为例:

x1=linspace(0,1,10000);
y1=(1-x1.^2).^0.5;

x2=rand([1,500]);
y2=rand([1,500]);

plot(x1,y1,x2,y2);

好像跟想象中的不大一样,我们把最后一行插入控制颜色和描点类型的部分

plot(x1,y1,'.',x2,y2,'.')%第一个'.'是使得线条看起来粗一些,第二个'.'是使得随机的点分开。

嗯,这样顺眼多了

Step2:添加亿点点细节,比如添加title,添加axis square语句,以及通过对于判断随机点落在四分之一圆内的数量和总点数之比的语句,来模拟面积之比。结合圆的面积公式,得知该比为pi/4。

Step3:使得gif效果显现出来。使用for循环,生成5幅图,并控制每幅图之间的时间间隙。

for i =[500,1000,2000,5000,10000];
    %画出1/4圆
    x1=linspace(0,1,10000);
    y1=(1-x1.^2).^0.5;
    
    x2=rand([1,i]);%1行500列
    y2=rand([1,i]);
    
    count=0;
    for j=1:i
        if x2(j)^2+y2(j)^2<=1
            count=count+1;
        end
    end
    plot(x1,y1,'k',x2,y2,'.')%第一个'k'是调整线条颜色,第二个'.'是使得随机的点分开。
    title([num2str(count)+" / "+num2str(i)+" * 4 = "+num2str(count/i*4)]);
    axis square;
    
    frame=getframe(gcf);%捕获坐标区或图窗作为影片帧
    I=frame2im(frame);  %返回与影片帧关联的图像数据
    [I,map]=rgb2ind(I,256);%将RGB 
    if i==500
        imwrite(I,map,'test.gif','gif','LoopCount',inf,"DelayTime",0.2);
    else
        imwrite(I,map,'test.gif','gif','WriteMode','append','DelayTime',0.2);%此处时间间隙为0.2s
    end
end

写在后面

其实说来惭愧,这次更新是因为没有及时保存实时函数的文件就关机了,所以觉得最保险的方法还是及时写成博文保存下来。
共勉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值