MATLAB元胞自动机报告,元胞自动机概述与MATLAB实现
什么是元胞自動機(jī)?
元胞自動機(jī)(cellular automata,CA) 是一種時間、空間、狀態(tài)都離散,空間相互作用和時間因果關(guān)系為局部的網(wǎng)格動力學(xué)模型,具有模擬復(fù)雜系統(tǒng)時空演化過程的能力。它能構(gòu)建隨時間推移發(fā)生狀態(tài)轉(zhuǎn)移的系統(tǒng),細(xì)胞存在于一維或多維網(wǎng)格中,每個細(xì)胞都有一個或多個狀態(tài),每個細(xì)胞都有鄰居(即鄰近的細(xì)胞)。
元胞自動機(jī)分類
平穩(wěn)型:自任何初始狀態(tài)開始,經(jīng)過一定時間運(yùn)行后,元胞空間趨于一個空間平穩(wěn)的構(gòu)形,這里空間平穩(wěn)即指每一個元胞處于固定狀態(tài)。不隨時間變化而變化。
周期型:經(jīng)過一定時間運(yùn)行后,元胞空間趨于一系列簡單的固定結(jié)構(gòu)(Stable Patterns)或周期結(jié)構(gòu)(Perlodical Patterns)。由于這些結(jié)構(gòu)可看作是一種濾波器(Filter),故可應(yīng)用到圖像處理的研究中。
混沌型:自任何初始狀態(tài)開始,經(jīng)過一定時間運(yùn)行后,元胞自動機(jī)表現(xiàn)出混沌的非周期行為,所生成的結(jié)構(gòu)的統(tǒng)計特征不再變止,通常表現(xiàn)為分形分維特征。
復(fù)雜型:出現(xiàn)復(fù)雜的局部結(jié)構(gòu),或者說是局部的混沌,其中有些會不斷地傳播。
奇偶規(guī)則
奇偶規(guī)則是定義在二維網(wǎng)格上的一種元胞自動機(jī)。每個網(wǎng)格的狀態(tài)用0各1表示。
(1)???? 對應(yīng)于每一個元胞位置(i,j)計算出其八個最近領(lǐng)居在t時刻的狀態(tài)值St的總和M(i,j)。
(2)???? 根據(jù)M(i,j)取值的奇偶性來決定下一時刻t+1該點(diǎn)的狀態(tài)St+1(i,j)。當(dāng)M(i,j)為偶數(shù)時,St+1(i,j)等于0;當(dāng)M(i,j)為奇數(shù)時,St+1(i,j)等于1。八個點(diǎn)和為偶數(shù),則變?yōu)?,為奇數(shù)則變?yōu)?1
平穩(wěn)型元胞自動機(jī)實(shí)現(xiàn)
MATLAB
% 規(guī)則,先把中間點(diǎn)置為1,每一時間步對每一點(diǎn),如果周圍
% 八個點(diǎn)和為偶數(shù),則變?yōu)?,為奇數(shù)則變?yōu)?1
Map = [1 1 1; 0 0 0];
colormap(Map);
% 設(shè)置網(wǎng)格大小
S = 121;
L = zeros(S);
% 把中間一個數(shù)設(shè)置為 1 作為元胞種子
M = (S+1)/2;
L(M, M) = 1;
Temp = L;
imagesc(L);
% 計算層數(shù)
Layer = (S-1)/2 + 1;
for t=2:Layer
for x=M-t+1:M+t-1
if x==M-t+1 || x==M+t-1
for y=M-t+1:M+t-1
SUM = 0;
for m=-1:1
for n=-1:1
if x+m>0 && x+m<=S && y+n>0 && y+n<=S
SUM = SUM + L(x+m, y+n);
end
end
end
SUM = SUM - L(x, y);
Temp(x, y) = mod(SUM, 2);
end
else
y = M-t+1;
SUM = 0;
for m=-1:1
for n=-1:1
if x+m>0 && x+m<=S && y+n>0 && y+n<=S
SUM = SUM + L(x+m, y+n);
end
end
end
SUM = SUM - L(x, y);
Temp(x, y) = mod(SUM, 2);
y = M+t-1;
SUM = 0;
for m=-1:1
for n=-1:1
if x+m>0 && x+m<=S && y+n>0 && y+n<=S
SUM = SUM + L(x+m, y+n);
end
end
end
SUM = SUM - L(x, y);
Temp(x, y) = mod(SUM, 2);
end
end
L = Temp;
imagesc(L);
pause(0.1);
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
%規(guī)則,先把中間點(diǎn)置為1,每一時間步對每一點(diǎn),如果周圍
%八個點(diǎn)和為偶數(shù),則變?yōu)?,為奇數(shù)則變?yōu)?
Map=[111;000];
colormap(Map);
%設(shè)置網(wǎng)格大小
S=121;
L=zeros(S);
%把中間一個數(shù)設(shè)置為1作為元胞種子
M=(S+1)/2;
L(M,M)=1;
Temp=L;
imagesc(L);
%計算層數(shù)
Layer=(S-1)/2+1;
fort=2:Layer
forx=M-t+1:M+t-1
ifx==M-t+1||x==M+t-1
fory=M-t+1:M+t-1
SUM=0;
form=-1:1
forn=-1:1
ifx+m>0&&x+m<=S&&y+n>0&&y+n<=S
SUM=SUM+L(x+m,y+n);
end
end
end
SUM=SUM-L(x,y);
Temp(x,y)=mod(SUM,2);
end
else
y=M-t+1;
SUM=0;
form=-1:1
forn=-1:1
ifx+m>0&&x+m<=S&&y+n>0&&y+n<=S
SUM=SUM+L(x+m,y+n);
end
end
end
SUM=SUM-L(x,y);
Temp(x,y)=mod(SUM,2);
y=M+t-1;
SUM=0;
form=-1:1
forn=-1:1
ifx+m>0&&x+m<=S&&y+n>0&&y+n<=S
SUM=SUM+L(x+m,y+n);
end
end
end
SUM=SUM-L(x,y);
Temp(x,y)=mod(SUM,2);
end
end
L=Temp;
imagesc(L);
pause(0.1);
end
效果圖
總結(jié)
以上是生活随笔為你收集整理的MATLAB元胞自动机报告,元胞自动机概述与MATLAB实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab dir数,DIR - ma
- 下一篇: 查找文件中每行第二个单词_日语单词中的长