【老生谈算法】matlab实现元胞自动机算法源码——元胞自动机
元胞自动机与MATLAB源码
1、算法详解:
引言
元胞自动机(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,.25n:.75n) = 1;
cells(.25n:.75n,n/2) = 1;
Matlab的代码应尽量简洁以减小运算量。以下程序计算了最近邻居总和&#