Matlab编写元胞自动机程序

Matlab编写元胞自动机程序

ID:36772108

大小:282.08 KB

页数:23页

时间:2019-05-15

Matlab编写元胞自动机程序_第1页
Matlab编写元胞自动机程序_第2页
Matlab编写元胞自动机程序_第3页
Matlab编写元胞自动机程序_第4页
Matlab编写元胞自动机程序_第5页
资源描述:

《Matlab编写元胞自动机程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、元胞自动机与MATLAB引言元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状态。变化规则适用于每一个元胞并且同时进行。典型的变化规则,决定于元胞的状态,以及其(4或8)邻居的状态。元胞自动机已被应用于物理模拟,生物模拟等领域。本文就一些有趣的规则,考虑如何编写有效的MATLAB的程序来实现这些元胞自动机。MATLAB的编程考虑元胞自动机需要考虑到下列因素,下面分别说明如何用MATLAB实现这些部分。并以Conway的生命游戏机的程序为例,说明怎样实现一个元胞自动机。ò矩阵和图像可以相互

2、转化,所以矩阵的显示是可以真接实现的。如果矩阵cells的所有元素只包含两种状态且矩阵Z含有零,那么用image函数来显示cat命令建的RGB图像,并且能够返回句柄。imh=image(cat(3,cells,z,z));set(imh,'erasemode','none')axisequalaxistightò矩阵和图像可以相互转化,所以初始条件可以是矩阵,也可以是图形。以下代码生成一个零矩阵,初始化元胞状态为零,然后使得中心十字形的元胞状态=1。z=zeros(n,n);cells=z;cells(n/2,.25*n:.75*n)=1;cells(.25*n:.75

3、*n,n/2)=1;òMatlab的代码应尽量简洁以减小运算量。以下程序计算了最近邻居总和,并按照CA规则进行了计算。本段Matlab代码非常灵活的表示了相邻邻居。x=2:n-1;y=2:n-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)

4、(sum==2&cells);ò加入一个简单的图形用户界面是很容易的。在下面这个例子中,应

5、用了三个按钮和一个文本框。三个按钮,作用分别是运行,停止,程序退出按钮。文框是用来显示的仿真运算的次数。%buildtheGUI%definetheplotbuttonplotbutton=uicontrol('style','pushbutton',...'string','Run',...'fontsize',12,...'position',[100,400,50,20],...'callback','run=1;');%definethestopbuttonerasebutton=uicontrol('style','pushbutton',...'string

6、','Stop',...'fontsize',12,...'position',[200,400,50,20],...'callback','freeze=1;');%definetheQuitbuttonquitbutton=uicontrol('style','pushbutton',...'string','Quit',...'fontsize',12,...'position',[300,400,50,20],...'callback','stop=1;close;');number=uicontrol('style','text',...'string','1

7、',...'fontsize',12,...'position',[20,400,50,20]);经过对控件(和CA)初始化,程序进入一个循环,该循环测试由回调函数的每个按钮控制的变量。刚开始运行时,只在嵌套的while循环和if语句中运行。直到退出按钮按下时,循环停止。另外两个按钮按下时执行相应的if语句。stop=0;%waitforaquitbuttonpushrun=0;%waitforadrawfreeze=0;%waitforafreezewhile(stop==0)if(run==1)%nearestneighborsumsum(x,y)=cells(x,

8、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(3:n,y-1)+cells(x+1,y+1);%TheCArulecells=(sum==3)

9、(sum==2&cells);%drawthenewimageset(imh,'cdata',cat(3,cells,z,z))%updatethestepnumberdiaplaystepnumber=1+str2num(get(number,'string'));

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。