首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Octave或Matlab的森林火灾模拟

基于Octave或Matlab的森林火灾模拟
EN

Stack Overflow用户
提问于 2015-04-03 13:59:42
回答 2查看 649关注 0票数 0

在此页面中,https://courses.cit.cornell.edu/bionb441/CA/forest.m

我发现了一个名为"Forest Fire“的代码,我正在尝试弄清楚这个代码是如何用于教育目的的。

以下是规则:

单元格可以处于3种不同的状态。State=0为空,state=1正在燃烧,state=2为森林。

如果一个单元的4个邻居中的一个或多个正在燃烧,并且它是森林(state=2),那么新状态是正在燃烧(state=1)。

正在燃烧的单元格(state=1)变为空(state=0)。

森林细胞(state=2)开始自行燃烧(闪电)的可能性很低(0.000005)。

一个空的单元格变成森林来模拟生长的可能性很低(比如0.01)。

它的工作原理不是很清楚的是...

代码语言:javascript
复制
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) ;

在运行代码时没有问题,只是我搞不懂这些向量(sum和veg)是什么。特别是使(veg(1:n,n 1:n-1)==1)。

我看到的是,两者都是矩阵,而veg是绘图的数据(matriz有0的1和2的值)。

我真的很感谢你能提供的任何帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-04-15 22:23:37

矩阵和标量上的二元比较运算符返回该二元比较的元素与标量和原始矩阵的相应元素的矩阵。

sum是一个矩阵,其中每个单元包含相应矩阵veg中处于着火状态(==1)的相邻单元的数量。

( veg (1:n,n 1:n-1)==1)是逻辑1和0的矩阵(我不知道数据类型是静态的还是动态的),其中当veg中相应单元格左侧的单元格着火(==1)时,每个单元格等于1。

票数 0
EN

Stack Overflow用户

发布于 2016-02-20 14:37:24

https://courses.cit.cornell.edu/bionb441/CA/

查看URL,返回到树上查看源代码。

规则:单元格可以有3种不同的状态。State=0为空,state=1正在燃烧,state=2为森林。如果4个邻居中的一个或多个单元正在燃烧并且它是森林(state=2),则新状态是正在燃烧(state=1)。森林细胞(state=2)开始自燃(闪电)的可能性很低(比如0.000005)。正在燃烧的单元格(state=1)变为空(state=0)。一个空的单元格变成森林来模拟生长的可能性很低(比如0.01)。该阵列被认为是环形连接的,因此向左侧燃烧的火焰将在右侧引发火灾。顶部和底部类似地连接在一起。更新代码:

代码语言:javascript
复制
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) ;

请注意,环形连接是通过下标的排序来实现的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29426986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档