24小时热门版块排行榜    

查看: 1383  |  回复: 0

wangyongjian

金虫 (初入文坛)

[求助] MATLAB生命的游戏代码求助

各位大侠,我刚刚接触MATLAB,自己看了一下生命的游戏的代码。有几个困惑还请大侠们给解答一下,谢过了。
首先,
%set a few cells to one
cells(n/2,.25*n:.75*n) = 1;
cells(.25*n:.75*n,n/2) = 1;

cells = (rand(n,n))<.5 ;
%how long for each case to stability or simple oscillators
根据上面的代码可以知道,cells(n/2,.25*n:.75*n) = 1;cells(.25*n:.75*n,n/2) = 1是给cells矩阵赋值,但是我觉得cells = (rand(n,n))<.5 就已经可以完成任务了,而且加上cells = (rand(n,n))<.5 这一句后,cells(n/2,.25*n:.75*n) = 1;cells(.25*n:.75*n,n/2) = 1的效果也体现不出来啊?另外,cells = (rand(n,n))<.5 我觉得就只有赋值功能,但是看注释好像还有作为评判标准的意思(%how long for each case to stability or simple oscillators)?
第二,%nearest neighbor sum
        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(3:n,y-1) + cells(x+1,y+1);
这个是计算一个方格周围近邻的个数, cells(3:n,y-1)是什么意思,看到很多计算近邻的代码都是这样写的,我觉得应该是 cells(x+1,y-1)啊。
第三, % The CA rule      
cells = (sum==3) | (sum==2 & cells)。 这句就不明白了,我觉得应该是cells(x,y) = (sum(x,y)==3) | (sum(x,y)==2 & cells)。。?

完整代码如下

%Conway's life with GUI
clf
clear all
%=============================================
%build the GUI
%define the plot button
plotbutton=uicontrol('style','pushbutton',...
   'string','Run', ...
   'fontsize',12, ...
   'position',[100,400,50,20], ...
   'callback', 'run=1;');
%define the stop button
erasebutton=uicontrol('style','pushbutton',...
   'string','Stop', ...
   'fontsize',12, ...
   'position',[200,400,50,20], ...
   'callback','freeze=1;');
%define the Quit button
quitbutton=uicontrol('style','pushbutton',...
   'string','Quit', ...
   'fontsize',12, ...
   'position',[300,400,50,20], ...
   'callback','stop=1;close;');
number = uicontrol('style','text', ...
    'string','1', ...
   'fontsize',12, ...
   'position',[20,400,50,20]);   

%=============================================
%CA setup
n=128;
%initialize the arrays
z = zeros(n,n);
cells = z;
sum = z;
%set a few cells to one
cells(n/2,.25*n:.75*n) = 1;
cells(.25*n:.75*n,n/2) = 1;
%cells(.5*n-1,.5*n-1)=1;
%cells(.5*n-2,.5*n-2)=1;
%cells(.5*n-3,.5*n-3)=1;
cells = (rand(n,n))<.5 ;
%how long for each case to stability or simple oscillators
%build an image and display it
imh = image(cat(3,cells,z,z));
set(imh, 'erasemode', 'none')
axis equal
axis tight
%index definition for cell update
x = 2:n-1;
y = 2:n-1;
%Main event loop
stop= 0; %wait for a quit button push
run = 0; %wait for a draw
freeze = 0; %wait for a freeze
while (stop==0)     
    if (run==1)
        %nearest neighbor sum
        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(3:n,y-1) + cells(x+1,y+1);
        % The CA rule
        cells = (sum==3) | (sum==2 & cells);      
        %draw the new image
        set(imh, 'cdata', cat(3,cells,z,z) )
        %update the step number diaplay
        stepnumber = 1 + str2num(get(number,'string'));
        set(number,'string',num2str(stepnumber))
    end   
    if (freeze==1)
        run = 0;
        freeze = 0;
    end
        drawnow  %need this in the loop for controls to work
   
end
回复此楼
混不好我就不回来了
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 wangyongjian 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 关于代码变化问题,想知道的进来 +6 且听虎啸 2026-08-07 9/450 2026-08-07 18:40 by naalan7001
[基金申请] 关于filecode +3 布布和一二 2026-08-07 6/300 2026-08-07 17:51 by 医学老男孩
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] filecode与中标关系的预测 +3 布布和一二 2026-08-07 3/150 2026-08-07 15:09 by gltch
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[论文投稿] 十年后又回来了,论文投稿求助 +4 哈哈114477 2026-08-01 4/200 2026-08-07 14:39 by jgy194592
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +23 低垂的野花 2026-07-31 31/1550 2026-08-07 12:22 by speculiar
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] 基金中了 +11 laoda193707 2026-08-06 11/550 2026-08-07 10:54 by TT和NN
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见