元胞自動機


原理:應用於物理模擬,生物模擬等領域

典型應用

  生命自動機:一個細胞下一狀態的生死取決於周圍細胞的生死。對一個細胞周圍的 8 個近鄰的元胞狀態求和,狀態改變規則如下:

       如果總和為 2 ,則下一時刻的狀態不改變
    如果總和為 3 ,則下一時刻的狀態為 1
    否則狀態= 0

      一個細胞看作一個元胞,元胞的鄰居定義通常有以下三種范式,這里采用第二種,認為其周圍八個點為鄰居:

  代碼如下:

%% 設置GUI按鍵
plotbutton=uicontrol('style','pushbutton','string','運行', 'fontsize',12, 'position',[150,400,50,20], 'callback', 'run=1;');%運行按鈕
erasebutton=uicontrol('style','pushbutton','string','停止','fontsize',12,'position',[250,400,50,20],'callback','freeze=1;');%停止按鈕
quitbutton=uicontrol('style','pushbutton','string','退出','fontsize',12,'position',[350,400,50,20],'callback','stop=1;close;');%退出按鈕
number = uicontrol('style','text','string','1','fontsize',12, 'position',[20,400,50,20]);%左上角數字
%% 元胞自動機設置
n=200;
%初始化各元胞狀態
z = zeros(n,n);
sum = z;
cells = (rand(n,n))<.6;
% 建立圖像句柄
imh = image(cat(3,cells,z,z));
set(imh, 'erasemode', 'none')
% 元胞更新的行列數設置
x = 2:n-1;
y = 2:n-1;

% 主事件循環 stop= 0; run = 0;freeze = 0;
while stop==0 if run==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); set(imh, 'cdata', cat(3,cells,z,z) ) stepnumber = 1 + str2double(get(number,'string')); set(number,'string',num2str(stepnumber)) end if freeze==1 run = 0; freeze = 0; end drawnow end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM