IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 基于元胞自动机的森林火灾matlab模拟 -> 正文阅读

[数据结构与算法]基于元胞自动机的森林火灾matlab模拟

先建立一个300*300的矩阵,模拟森林的各种状态,其中矩阵的每个元素有3个状态,分别是0、1、2,其中0代表此处没有树木生长,1代表此处的树木正在燃烧,2代表此处有树木。
这个模型的规则是,
A、如果矩阵中的一个树木上下左右有燃烧的树木,那么它会被点燃,也就是说如果一个元素的状态为 2,它的“上下左右”相邻的元素中有值为1的话,那么这个元素在下一次的循环中会变成1,;
B、如果一个树木正处于燃烧中,那么它会熄灭,也就是说如果一个元素的值为1,那么它在下一次循环中会变成0;
C、在没有树的土地上有几率长成树木,也就是说如果一个元素为0,那么它在下一次循环之中有一定的几率变成2;
D、树木有几率被点燃,也就是说如果一个元素值为2,那么它在下一次循环之中有几率会变成1。
其中程序编写的思路是,先创建一个300X300的状态矩阵,然后再每次循环的时候将上述的模型的4条规则加入其中,针对规则A,找出矩阵中每个元素的上下左右的元素,这样会构成4个矩阵,然后利用判别表达式求出4个逻辑矩阵,将4个逻辑矩阵相加,然后利用相加得到的值是否大于1来判断此元素是否在下次循环中是否被置为1;针对规则B,在每次状态矩阵取值的过程之时,总是会将矩阵中的每个元素全部置为0,然后对每个元素进行相应的赋值,如果矩阵中的某元素在这轮循环赋值结束之时为0,那么它处于无树木的状态;针对规则C,利用matlab内置的随机函数产生一个概率矩阵,如果矩阵中的元素小于树木生长的概率,那么生成的逻辑矩阵中对应的元素置1;针对规则D,同规则C,利用内置的随机函数及布尔表达式生成一个概率矩阵。
其代码如下:

%0为空位
%1为燃烧的树
%2为正常的树
n = 300; %构造森林大小
Plight = 5e-6; %被雷击中的概率
Pgrowth = 1e-2;%生长的概率
UL = [n,1:n-1]; %上左邻居
DR = [2:n,1];%下右邻居
veg=zeros(n,n);%森林
imh = image(cat(3,veg,veg,veg));
% veg = empty=0 burning=1 green=2
for i=1:3000 %循环
    %观察每一个空位其上下左右邻居正在燃烧的树的个数(sum为300*300矩阵,每一个值对应森林的每一个空位)
    
    sum =            (veg(UL,:)==1) + ...
        (veg(:,UL)==1)     +      (veg(:,DR)==1) + ...
                     (veg(DR,:)==1);
%veg(UL,:)==1这是每个点的上邻居
 % (veg(:,UL)==1)这是每个点的左邻居               
  % (veg(:,DR)==1)这是每个点的 右邻居             
   %  (veg(DR,:)==1)这是每个点的下邻居
                 %现存的树=树-被烧毁的树+新生的树
    veg = 2*(veg==2) - ...
          ( (veg==2) & (sum>0 | (rand(n,n)<Plight)) ) + ...
          2*((veg==0) & rand(n,n)<Pgrowth) ;
     
    set(imh, 'cdata', cat(3,(veg==1),(veg==2),zeros(n)))%画图
    drawnow
i
end

运行效果如下图,其中黑色的点的值为0,代表此处没有树木,红色的点的值为1,代表此处的树木正在燃烧,绿色的点对应的值为2,代表此处有树木
在这里插入图片描述

代码参考地址https://blog.csdn.net/qq_43434831/article/details/100146269

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:18:25  更:2021-10-03 17:20:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 9:49:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码