CellularAutomata元胞向量机-2-初等元胞自动机MATLAB代码分享

该代码实现了一个二维元胞自动机的模型,其中中间点初始化为1,按照规则:若周围8个点之和为偶数,则当前点变为0,为奇数则变为1。使用MATLAB进行图像显示,并通过循环迭代展示动态变化过程,同时有速度控制以观察演变细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%% 二维元胞自动机

%imagesc(a)的色度矩阵a中0->256由蓝变黄

% 规则,先把中间点置为1,每一时间每一点如果

%周围八个点和为偶数,则变为0,为奇数则变为 1

% 颜色控制

clc, clear

Map = [1 1 1; 0 0 0];% [0 0 0] is black, [1 1 1] is white,

colormap(Map);

% 设置网格大小

S = 121;

L = zeros(S);

% 把中间一个数设置为 1 作为元胞种子

M = (S+1)/2;

display(M)

L(M, M) =1;

Temp = L;

% imagesc(L);

% 计算层数

Layer = (S-1)/2 + 1;

display(Layer)

for t=2:Layer

for x=M-t+1:M+t-1 % 60-62,59-63...1-121

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 % s+121;

SUM = SUM + L(x+m, y+n);

% display(SUM)

end

end

end

SUM = SUM - L(x, y);

Temp(x, y) = mod(SUM, 2); % mod(a,b)就是求的是a除以b的余数

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.05);

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习不好的电气仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值