收藏 分享(赏)

元胞自动机-沙堆模型代码.doc

上传人:HR专家 文档编号:11352320 上传时间:2020-04-02 格式:DOC 页数:3 大小:78KB
下载 相关 举报
元胞自动机-沙堆模型代码.doc_第1页
第1页 / 共3页
元胞自动机-沙堆模型代码.doc_第2页
第2页 / 共3页
元胞自动机-沙堆模型代码.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、function =testCA(n)z = zeros(n,n); cells = z; cells(n/2,.25*n:.75*n) = 1; cells(.25*n:.75*n,n/2) = 1;imh = image(cat(3,cells,z,z); set(imh, erasemode, none) axis equal axis tight %nx=52; %must be divisible by 4 ny=100; Pbridge = .05; z=zeros(nx,ny); o=ones(nx,ny); sand = z;sandNew = z;gnd = z ;gnd(1

2、:nx,ny-3)=1 ;% the ground line gnd(nx/4:nx/2+4,ny-15)=1; %the hole line gnd(nx/2+6:nx,ny-15)=1; %the hole line gnd(nx/4, ny-15:ny) = 1; %side line gnd(3*nx/4, 1:ny) = 1 ; % for i=1:1000 p=mod(i,2); %margolis neighborhood sand(nx/2,ny/2) = 1; %add a grain at the top %upper left cell update xind = 1+p

3、:2:nx-2+p; yind = 1+p:2:ny-2+p; %randomize the flow - 10% of the time vary = rand(nx,ny) .9 ; vary1 = 1-vary; sandNew(xind,yind) = . gnd(xind,yind).*sand(xind,yind) + . (1-gnd(xind,yind).*sand(xind,yind).*sand(xind,yind+1) .* . (sand(xind+1,yind+1)+(1-sand(xind+1,yind+1).*sand(xind+1,yind); sandNew(

4、xind+1,yind) = . gnd(xind+1,yind).*sand(xind+1,yind) + . (1-gnd(xind+1,yind).*sand(xind+1,yind).*sand(xind+1,yind+1) .* . (sand(xind,yind+1)+(1-sand(xind,yind+1).*sand(xind,yind); sandNew(xind,yind+1) = . sand(xind,yind+1) + . (1-sand(xind,yind+1) .* . ( sand(xind,yind).*(1-gnd(xind,yind) + . (1-san

5、d(xind,yind).*sand(xind+1,yind).*(1-gnd(xind+1,yind).*sand(xind+1,yind+1); sandNew(xind+1,yind+1) = . sand(xind+1,yind+1) + . (1-sand(xind+1,yind+1) .* . ( sand(xind+1,yind).*(1-gnd(xind+1,yind) + . (1-sand(xind+1,yind).*sand(xind,yind).*(1-gnd(xind,yind).*sand(xind,yind+1); %scramble the sites to m

6、ake it look better temp1 = sandNew(xind,yind+1).*vary(xind,yind+1) + . sandNew(xind+1,yind+1).*vary1(xind,yind+1); temp2 = sandNew(xind+1,yind+1).*vary(xind,yind+1) + . sandNew(xind,yind+1).*vary1(xind,yind+1); sandNew(xind,yind+1) = temp1; sandNew(xind+1,yind+1) = temp2; sand=sandNew; set(imh,cdata

7、,cat(3,z,sand,gnd) drawnow end %build the GUI %define the plot button plotbutton=uicontrol(style,pushbutton,string,Run,fontsize,12,position,100,400,50,20, callback, run=1;); %define the stop button erasebutton=uicontrol(style,pushbutton,string,Stop, fontsize,12,position,200,400,50,20,callback,freeze

8、=1;);%define the Quit button quitbutton=uicontrol(style,pushbutton,string,Quit,fontsize,12,position,300,400,50,20,callback,stop=1;close;);number = uicontrol(style,text, string,1, fontsize,12, position,20,400,50,20); stop= 0; %wait for a quit button push run = 0; %wait for a draw freeze = 0; %wait fo

9、r a freeze while (stop=0) if (run=1) %nearest neighbor sum 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(3:n,y-1) + cells(x+1,y+1); % The CA rule cells = (sum=3) | (sum=2 & cells); %draw the new image set(imh, cdata, cat(3,cells,z,z) ) %update the step number diaplay stepnumber = 1 + str2num(get(number,string); set(number,string,num2str(stepnumber) end if (freeze=1) run = 0; freeze = 0; end drawnow %need this in the loop for controls to workend

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 通信信息 > 电子设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报