没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
元胞自动机与 MATLAB
引言
元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元
胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状态。
变化规则适用于每一个元胞并且同时进行。典型的变化规则,决定于元胞的状态,
以及其( 4 或 8 )邻居的状态。元胞自动机已被应用于物理模拟,生物模拟等
领域。本文就一些有趣的规则,考虑如何编写有效的 MATLAB 的程序来实现这
些元胞自动机。
MATLAB 的编程考虑
元胞自动机需要考虑到下列因素,下面分别说明如何用 MATLAB 实现这些部分。
并以 Conway 的生命游戏机的程序为例,说明怎样实现一个元胞自动机。
矩阵和图像可以相互转化,所以矩阵的显示是可以真接实现的。如果矩阵
cells 的所有元素只包含两种状态且矩阵 Z 含有零,那么用 image 函数来显示
cat 命令建的 RGB 图像,并且能够返回句柄。
imh = image(cat(3,cells,z,z));
set(imh, 'erasemode', 'none')
axis equal
axis tight
矩阵和图像可以相互转化,所以初始条件可以是矩阵,也可以是图形。以下
代码生成一个零矩阵,初始化元胞状态为零,然后使得中心十字形的元胞状
态= 1。
z = zeros(n,n);
cells = z;
cells(n/2,.25*n:.75*n) = 1;
cells(.25*n:.75*n,n/2) = 1;
Matlab 的代码应尽量简洁以减小运算量。以下程序计算了最近邻居总和,并
按照 CA 规则进行了计算。本段 Matlab 代码非常灵活的表示了相邻邻居。
x = 2:n-1;
y = 2:n-1;
sum(x,y) = cells(x,y-1) + cells(x,y+1) + ...
cells(x-1, y) + cells(x+1,y) + ...
cells(x-1,y-1) + cells(x-1,y+1) + ...
cells(x+1,y-1) + cells(x+1,y+1);
cells = (sum==3) | (sum==2 & cells);
加入一个简单的图形用户界面是很容易的。在下面这个例子中,应用了三个
按钮和一个文本框。三个按钮,作用分别是运行,停止,程序退出按钮。文
框是用来显示的仿真运算的次数。
资源评论
阿里matlab建模师
- 粉丝: 3230
- 资源: 2782
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功