注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mister.Hu(巷里人家)

Go abroad!

 
 
 

日志

 
 
关于我

A campus photograph palyer,an enthusiastic reader,a solitary writer,a future traffic engineer.

网易考拉推荐

The cellular automaton by matlab--GAME OF LIFE  

2015-11-30 22:43:01|  分类: Senior |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

function Game_of_Life(n) 
% GAME OF LIFE
% Example: 
%   Game_of_Life(100); 
if nargin==0; %nargin用于表示输入参数个数
   n=100; 
end 
B=round(rand(n+2)); %rand(n+2)表示产生(n+2)*(n+2) (0,1)之间的随机数矩阵。而round()函数用于对其四舍五入。故B实际上全为0或1.
Z=B(2:end-1,2:end-1); %将B去皮后赋值给Z,故Z为100*100的全为0或1的矩阵。
H=imshow(Z,[]); %显示Z,并将Z的最大值和最小值分别作为纯白(255)和纯黑(0),中间的Z值映射为0到255之间的标准灰度值。
set(gcf,'position',[241 132 560 420]) %设定plot输出图片的尺寸。参数含义为:xmin,ymin,width,height
set(gcf,'doublebuffer','on'); %启动双缓存,一般是为动画演示做准备
xlabel('Please press "space" key and stop this program!',... 
 'fontsize',12,'color','r'); 
k=1; 
title('Game of life','color','b'); 
while k; 
  s=get(gcf,'currentkey'); %获取当前figure上(gcf)的键盘输入值
  if strcmp(s,'space'); %strcmp()为字符串比较
      clc;k=0; 
  end 
  A=sumfun(B); %调用了下面的sumfun()函数
  X=zeros(n); %产生一个全为0的100*100矩阵
  X(Z==1 & (A==2 | A==3))=1; %将在Z中值为1而且以其为中心周围和为2或3的数在X中赋值为1.
  X(Z==0 & A==3)=1; 
  B(2:end-1,2:end-1)=X; %将运算完成后的X赋值给B与Z,从而可以使得下一次的运算在本次的基础上进行
  Z=X; 
  set(H,'CData',1-X);%此处将1-X赋值给H的CData属性,相当于将得出的新的生命分布关系X通过H(imshow)在figure界面展示了出来。可以把1-X改为X对比效果,主要是黑白发生了对调。
  pause(0.5); 
end 
figure(gcf); 
function S=sumfun(B); 
% 周围8个位置的和,巧妙的把循环转化为向量运算。此时的S为一个100*100的矩阵,S的每一个元素值代表该元素所处位置映射到B时,其周围八邻域之和。
S=B(1:end-2,2:end-1)+... %...用于一句话未写完换行
   B(3:end,2:end-1)+... 
   B(2:end-1,1:end-2)+... 
   B(2:end-1,3:end)+... 
   B(1:end-2,1:end-2)+... 
   B(1:end-2,3:end)+... 
   B(3:end,1:end-2)+... 
   B(3:end,3:end); 
 

  评论这张
 
阅读(39)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016