元胞自动机与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

结果展示

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值