元胞自动机的matlab代码

元胞自动机的matlab代码,第1张

你的sum和cells都是矩阵,但是维度不同。

如果是这样,你在这段程序的前面给sum预分配个空间sum=zeros(size(cells,1),size(cells,2))。

然后注意遍历x,y的时候,不要到边界上,否则x+1,y+1之类的就越界了。

代码来自《元胞自动机与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) | (sum==2 &cells) %%%%此处出错

运行部分:

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 work

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12106854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存