- 在线时间
- 36 小时
- 最后登录
- 2014-2-7
- 注册时间
- 2013-7-12
- 听众数
- 7
- 收听数
- 0
- 能力
- 0 分
- 体力
- 384 点
- 威望
- 0 点
- 阅读权限
- 30
- 积分
- 227
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 222
- 主题
- 8
- 精华
- 0
- 分享
- 0
- 好友
- 10
- 自我介绍
- heh
群组: 2014年美赛冲刺培训 群组: Matlab讨论组 |
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表示?
|
|