数学建模社区-数学中国

标题: 求大神指导,关于元胞自动机的问题 [打印本页]

作者: wangkai2013    时间: 2014-2-3 15:55
标题: 求大神指导,关于元胞自动机的问题
5、Forest Fire
%CA driver
%
%forest fire
clf
clear all
n=100;
Plightning = .000005;
Pgrowth = .01; %.01
z=zeros(n,n);
o=ones(n,n);
veg=z;
sum=z;
imh = image(cat(3,z,veg*.02,z));
set(imh, 'erasemode', 'none')
axis equal
axis tight
% burning -> empty
% green -> burning if one neigbor burning or with prob=f (lightning)
% empty -> green with prob=p (growth)
% veg = {empty=0 burning=1 green=2}
for i=1:3000
%nearby fires?
sum = (veg(1:n,[n 1:n-1])==1) + (veg(1:n,[2:n 1])==1) + ...
(veg([n 1:n-1], 1:n)==1) + (veg([2:n 1],1:n)==1) ;
veg = ...
2*(veg==2) - ((veg==2) & (sum>0 | (rand(n,n)<Plightning))) + ...
2*((veg==0) & rand(n,n)<Pgrowth) ;
set(imh, 'cdata', cat(3,(veg==1),(veg==2),z) )
drawnow
end
请问,在这个森林火灾元胞程序中,o=ones(n,n)有什么用?并且,对于veg==1,即一个燃烧着的元胞(状态为 1 )在下一时时刻变成空位的(状态为0 )这个规则,好像程序没有说明?最后,set(imh, 'cdata', cat(3,(veg==1),(veg==2),z) )这个意思讲解一下就最好不过了,即为什么要用关联函数cat表示?






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5