Matlab 实现 Galton knocked boards

本文记录了使用Matlab创建Galton板动画的过程。从最初的代码学习,到理解其逻辑,逐步修改增加层数,优化运行速度并生成柱状图,展示了如何用Matlab实现正态分布的动态演示。
摘要由CSDN通过智能技术生成

5月写的 忘了发

事情来由:

昨天晚上兄弟突然问我会不会使用matlab来制作动画,有道题目想要我做一下

题目是这样的:

我就惊了,matlab还能用来制作动画的吗

查了一下,找到一段代码,随后开始了学习和修改的道路

原始代码是这样的:

K=100;
n=zeros(1,5);
delay=0.05;
clf;
axis([-4 4 -7 0]);
aa=sqrt(3)/2;
bb=1/2;
dd=3/2;
a=0.9*aa;
b=0.9*bb;
xx=[0,-aa,aa,-2*aa,0,2*aa,-3*aa,-aa,aa,3*aa];
yy=[0,-dd,-dd,-2*dd,-2*dd,-2*dd,-3*dd,-3*dd,-3*dd,-3*dd];
for k=1:K
   clf
   r=round(rand(1,4));
   x0=0;y0=0;
   text(1.5,-0.5,'Galton');hold on;
   text(2.5,-1,'cpw');hold on;
   for i=1:10
      x=xx(i);
      y=yy(i)-0.1;
      X=[x,x-a,x-a,x,x+a,x+a];
      Y=[y,y-b,y-b-0.9,y-1.8,y-b-0.9,y-b];
      fill(X,Y,'g');hold on;
   end
   n(sum(r)+1)=n(sum(r)+1)+1;
   plot(x0,y0,'ro');
   for j=1:4
      if r(j)==0
         x0=x0-aa;y0=y0-bb;
         plot(x0,y0,'ro');hold on;pause(delay);
         y0=y0-1;
         plot(x0,y0,'ro');hold on;pause(delay);
      else
         x0=x0+aa;y0=y0-bb;
         plot(x0,y0,'ro');hold on;pause(delay);
         y0=y0-1;
         plot(x0,y0,'ro');hold on;pause(delay);
      end
   end
   for m=1:5
      text((m-3)*sqrt(3),-6.5,num2str(n(m)));
   end
   pause(20*delay);
end

跑了一下确实不错,但是我想修改,于是就开始了一个一个函数去查询

添加注释:

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值