Octave 用倍频程或Matlab进行森林火灾模拟

Octave 用倍频程或Matlab进行森林火灾模拟,octave,simulation,automata,Octave,Simulation,Automata,在本页中 我发现了一个代号为森林大火的地方 我正在试图弄清楚这段代码是如何用于教育目的的 规则如下: 细胞可以处于3种不同的状态。状态=0为空,状态=1为正在燃烧,状态=2为林 如果一个单元的4个邻居中的一个或多个正在燃烧,并且它是林状态=2,则新状态是燃烧状态=1 燃烧状态为1的单元格变为空状态为0 森林单元状态=2开始因闪电自行燃烧的概率很低,为0.000005 有一个低概率,比如说,0.01的空细胞变成森林来模拟生长 现在还不清楚它是如何工作的 sum = (veg(1:n,[n 1:n-

在本页中

我发现了一个代号为森林大火的地方 我正在试图弄清楚这段代码是如何用于教育目的的

规则如下:

细胞可以处于3种不同的状态。状态=0为空,状态=1为正在燃烧,状态=2为林

如果一个单元的4个邻居中的一个或多个正在燃烧,并且它是林状态=2,则新状态是燃烧状态=1

燃烧状态为1的单元格变为空状态为0

森林单元状态=2开始因闪电自行燃烧的概率很低,为0.000005

有一个低概率,比如说,0.01的空细胞变成森林来模拟生长

现在还不清楚它是如何工作的

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) ;
运行代码没有问题,只是我搞不清楚这些向量和和向量是什么。尤其是什么使得veg1:n,[n1:n-1]==1

我看到的是,两者都是矩阵,veg是0的1和2的绘图矩阵的数据


非常感谢您提供的任何帮助。

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

sum是一个矩阵,其中每个单元包含对应矩阵veg中着火的相邻单元数==1

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

查看URL,返回树以查看源代码

规则: 细胞可以处于3种不同的状态。状态=0为空,状态=1为正在燃烧,状态=2为林。 如果一个单元正在燃烧,且其为林状态=2,则新状态为燃烧状态=1。 有一个低概率,比如说0.000005的森林细胞状态=2开始因闪电而自行燃烧。 燃烧状态为1的单元格变为空状态为0。 有一个低概率,比如说,0.01的空细胞变成森林来模拟生长。 该阵列被认为是环形连接的,因此向左侧燃烧的火将从右侧开始燃烧。顶部和底部是类似的连接。 更新代码:

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) ;

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

您遇到了什么问题/错误?请更新。