元胞自动机与MATLAB实现笔记

Posted 好奇小圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元胞自动机与MATLAB实现笔记相关的知识,希望对你有一定的参考价值。


前言

本文章将介绍元胞自动机的概念、组成、原理,并且用MATLAB实现奇偶规则和生命游戏等有趣的内容。


一、元胞自动机是什么?

1.定义

元胞自动机是一种时间、空间、状态都离散,空间相互作用的时间因果关系,为就不懂网络动力学模型,具有模拟复杂系统时空演化的能力。

2.构成

元胞、元胞空间、元胞邻居、元胞规则。
在这里插入图片描述
邻居:某一元胞状态更新时索要搜索的空间域就是该元胞的邻居。

3.邻居类型

冯诺依曼型、Moor型、扩展Moor型

4.边界条件

固定型
周期型:收尾相接
绝热型:边界邻居与自己相同
映射型:左右或上下对称映射

5.构成特征

离散性:空间、时间、状态都离散
同质性:服从相同规律、分布方式相同
并行性:元胞的更新规则变化是同步进行的
高维度:元胞自动机是一类无穷维动力系统

二、实例

1.奇偶规则

邻居之和(上下左右四个格子)为奇数,中心元胞变为1
邻居之和为偶数,中心之和变为0

代码如下:

clear;
clc;
n=200;					%元胞空间
Se=zeros(n);			%零矩阵
z=zeros(n);				%零矩阵
Se(n/2-2:n/2+2,n/2-2:n/2+2)=1;	%初始化矩阵
Ch=imagesc(cat(3,Se,z,z))		%图像化显示矩阵,并实现颜色转变   	
	%C = cat(dim, A1, A2, A3, ...)    按dim联结所有输入的数组。
	%imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当的缩放(显示出来的尺寸大小)。
axis square;			%方形边框
Sd=zeros(n+2);			%边界条件
while(1)
    Sd(2:n+1,2:n+1)=Se;
    SUM=Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2);
    					%下邻居+上邻居+左邻居+右邻居
    Se=mod(SUM,2);
    set(Ch,'cdata',cat(3,Se,z,z))   
	    %set(H,NameArray,ValueArray) 使用元胞数组 NameArray 和 ValueArray 指定多个属性值。
	    %要为 m 个图形对象中的每个图形对象设置 n 个属性值,请将 ValueArray 指定为 m×n 的元胞数组,
	    %其中 m = length(H),而 n 等于 NameArray 中包含的属性名的数量。    
    pause(0.03)
end

结果展示

2.生命游戏

只有“生”和“死”两种状态,每个小格有八个邻居。
~对于“生”的格子
2或3个邻居为生则生,否则死
~对于“死”的格子
3个邻居为生则生,否则死

代码如下:

clear;
clc;
n=200;				%元胞空间
p=0.4;
z=zeros(n);			%零矩阵
Se=rand(n)<p;		%小于p为1,大于p为0
Sd=zeros(n+2);		%边界条件
Ph=image(cat(3,Se,z,z));
while(1)
    Sd(2:n+1,2:n+1)=Se;
    SUM=Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2)+Sd(1:n,1:n)+Sd(3:n+2,3:n+2)+Sd(1:n,3:n+2)+Sd(3:n+2,1:n);
    %下邻居+上邻居+左邻居+右邻居+左下邻居+右上邻居+左上邻居+右下邻居
    for i=1:n
        for j=1:n
            if SUM(i,j)==3||(SUM(i,j)==2&&Se(i,j)==1)
                Se(i,j)=1;
            else 
                Se(i,j)=0;
            end
        end
    end
    set(Ph,'cdata',cat(3,Se,z,z))%更新可视化
    drawnow
end

结果展示

以上是关于元胞自动机与MATLAB实现笔记的主要内容,如果未能解决你的问题,请参考以下文章

元胞自动机基于matlab元胞自动机生命游戏含Matlab源码 655期

元胞自动机格子波尔兹曼模型及其应用研究(Matlab代码实现)

毕设题目:Matlab元胞自动机生命游戏

毕设题目: Matlab元胞自动机森林火灾

元胞自动机基于元胞自动机实现多车道信号交叉口仿真matlab源码

元胞自动机基于元胞自动机实现图像处理matlab源码