Matlab中每行生命游戏代码的注释

色度控制中心

清楚了吗?全部

接近?全部

m = 30n = 30p = .7h = 100;

%%

%生成一个30*30的矩阵a,a的值根据随机数是否大于阈值0.7确定为1或0。

为了什么?x=1:m

为了什么?y=1:n

r =兰特(1);%rand生成从0到1(不包括1)的随机数。

如果?r & gtp

a(x,y)= 1;

不然呢?a(x,y)= 0;

结束

结束

结束

%%

为了什么?x=1:m

为了什么?y=1:n

如果?a(x,y)==1

FX =;fy=[0,0,n,n];fill(fx,fy,' k '),hold?在%上画一个30*30的黑色背景

为了什么?x=2:m-1

为了什么?y=2:n-1

b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x,y-1)+a(x,y+1)+a(x,y+1)+a(x+1,y-1)+a(x+65438

%根据生命游戏规则,取矩阵A的元素(x,y)周围八个元素的值之和,因为最外一圈元素周围没有相邻的八个元素。

%所以我们不考虑x和y的取值范围是2:m-1和2:n-1。

如果?b(x,y)==2,c(x,y)=a(x,y);

%如果(x,y)周围有两个1的细胞,也就是游戏意义上的两个活细胞,那么这个细胞的下一次生死与最初的生死有关。

埃尔瑟夫?b(x,y)==3,c(x,y)= 1;

%如果(x,y)周围有三个1细胞,也就是游戏意义上的两个活细胞,那么这个细胞在下一个时刻会存活(这里我假设1是活的)。

不然呢?c(x,y)= 0;

%如果(x,y)周围的活细胞不是这两个值,也就是太多或者太少,那么这个细胞在下一个时刻就会死亡(这里我假设0是死亡)。

结束

结束

结束

%%

c(1:m,1)=a(1:m,1);

c(1:m,n)=a(1:m,n);%两边加两列

c(1,1:n)=a(1,1:n);%我感觉这里应该加上下两行,但是原程序没有。否则,缺少的部分为零,显示始终为黑色。

c(m,1:n)=a(m,1:n);%注意,矩阵表示和绘制相当于矩阵转置,如果矩阵上下两行缺失,左右两边显示为黑色。

为了什么?x=1:m

为了什么?y=1:n

如果?c(x,y)==1

fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,' g '),hold?在

其他

结束

结束

结束

%画c,如上,画a。

暂停(. 05)%暂停0.05秒,观察变化过程。

a = c;%将C赋给A,即此时的C视为前一时刻的A,循环继续绘制。

结束

%这个过程是生成一个随机的30*30的矩阵A,根据生命游戏规则计算并显示矩阵A的中间29*29部分,循环100次。

%可以发现图形的最外圈是不变的。