赞
踩
简介:元胞自动机(cellular automata,CA) 是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。
主要内容:
一、元胞
元胞可以是数字,字符,字符串等,是多元化的,可理解为一个变量。
二、邻居
会对元胞下一状态产生影响的称为邻居,注意:并不是在其周围就一定是邻居,必须满足对其下一状态产生影响这一条件
三、元胞空间
理论上元胞空间是无限的,实际应用中无法达到这一理想条件,为了给元胞空间边界上的元胞拥有特定规则下所需要的邻居,就需要构造出一些虚拟的邻居,从而引出了边界条件的概念。
常用的邻居边界条件有四种类型:固定型、周期型、绝热型、映射型。
1.固定型
顾名思义,即固定了边界的数值
2.周期型
即按照每行或每列的周期性来决定边界数值,比如图中3位置,该行从左往右按照3、2、4、1、5的顺序,所以3位置左边界数值为5,该列同理得出3位置下边界数值为3。(左下角)
3.绝热型
如图,可理解为复制左下角3位置的数值
4.映射型
如同,可理解为3位置按照行对称得到2,按照列对称得到5(左下角)
四、规则
根据元胞当前状态以及邻居的状态来决定下一时刻该元胞的状态。元胞自动机根据规则进行局部元胞间的相互作用从而引起全局的变化,可理解为正常的游戏规则等。
五、具体实例:
奇偶规则:元胞有两种状态:0和1
代码实现:
- clc
- clear all;
- n=200;
- Se=zeros(n); %%设置200*200的0数值矩阵
- Z=zeros(n) %%设置200*200的0数值矩阵
- Se(n/2-2:n/2+2,n/2-2:n/2+2)=1; %%设置行98到102,列98到102为1
- Ch=imagesc(cat(3,Se,Z,Z)); %%用图显示上述规则,cat为矩阵合成函数,改变颜色,0为黑色,1为红色
- axis square %%添加方形边框
- Sd=zeros(n+2); %%重新设置一个0数值矩阵包围原矩阵(设置边界)
- while(1) %%设置死循环,让它一直变化
- Sd(2:n+1,2:n+1)=Se; %%将Sd边界内矩阵变为满足规则下的矩阵
- 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); %%若相加和为偶数,则元胞为0,呈现黑色:反之则为红色
- set(Ch,'cdata',cat(3,Se,Z,Z)) %%Ch为初始化状态,将Ch变为Se,即矩阵的更新
- pause(0.05) %%间隔0.05s
- end
- figure
- %%全选代码后右键执行
运行代码即可得到结果(为动态变化过程)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。