首页 > 其他 > 详细

元胞自动机

时间:2020-01-11 15:20:37      阅读:79      评论:0      收藏:0      [点我收藏+]

原理:应用于物理模拟,生物模拟等领域

典型应用

  生命自动机:一个细胞下一状态的生死取决于周围细胞的生死。对一个细胞周围的 8 个近邻的元胞状态求和,状态改变规则如下:

       如果总和为 2 ,则下一时刻的状态不改变
    如果总和为 3 ,则下一时刻的状态为 1
    否则状态= 0

      一个细胞看作一个元胞,元胞的邻居定义通常有以下三种范式,这里采用第二种,认为其周围八个点为邻居:

技术分享图片

  代码如下:

%% 设置GUI按键
plotbutton=uicontrol(style,pushbutton,string,运行, fontsize,12, position,[150,400,50,20], callback, run=1;);%运行按钮
erasebutton=uicontrol(style,pushbutton,string,停止,fontsize,12,position,[250,400,50,20],callback,freeze=1;);%停止按钮
quitbutton=uicontrol(style,pushbutton,string,退出,fontsize,12,position,[350,400,50,20],callback,stop=1;close;);%退出按钮
number = uicontrol(style,text,string,1,fontsize,12, position,[20,400,50,20]);%左上角数字
%% 元胞自动机设置
n=200;
%初始化各元胞状态
z = zeros(n,n);
sum = z;
cells = (rand(n,n))<.6;
% 建立图像句柄
imh = image(cat(3,cells,z,z));
set(imh, erasemode, none)
% 元胞更新的行列数设置
x = 2:n-1;
y = 2:n-1;

% 主事件循环 stop= 0; run = 0;freeze = 0;
while stop==0 if run==1 % 计算邻居存活的总数 sum(x,y) = cells(x,y-1) + cells(x,y+1) + cells(x-1, y) + cells(x+1,y)... + cells(x-1,y-1) + cells(x-1,y+1) + cells(x+1,y-1) + cells(x+1,y+1); % 按照规则更新 cells = (sum==3) | (sum==2 & cells); set(imh, cdata, cat(3,cells,z,z) ) stepnumber = 1 + str2double(get(number,string)); set(number,string,num2str(stepnumber)) end if freeze==1 run = 0; freeze = 0; end drawnow end

元胞自动机

原文:https://www.cnblogs.com/pipitongkw1/p/12179935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!