请教大家一个很简单的元胞自动机程序
元胞自动机程序状态演化规则 ①如果一个元胞的状态是0,则当它有状态为1的邻元时,该元胞的状态以概率a×b变为1,并且当它的临域中状态为1的邻元越多,其状态转变为1的概率越大;②如果一个元胞的状态是1,则该元胞的状态保持不变。初始传播者位于中心单元格25×25处取50×50的网格,临域为Moore型,经过50个仿真时钟,知识传播结果的模拟图见附件
请教大家 此元胞自动机的程序怎么写。 多谢大家了感激不尽
[ 本帖最后由 ChaChing 于 2009-11-16 20:34 编辑 ] 曾经用Fortran写过类似的程序
[ 本帖最后由 无水1324 于 2008-8-16 22:16 编辑 ]
回复 沙发 express 的帖子
谢谢你我想请教一下用matlab 怎么写多谢了 matlab的demo就有一个很经典的生命游戏life.m。你在命令框里输入life即可运行。都是元胞自动机,原理都差不了多少。只不过改改规则而已。按照你的说法编了几行代码.。概率随意设的。
%% 初始化
m = 50; X = zeros(m,m); X(25,25) = 1;
n = ; e = ;
s = ; w = ;
% 绘制初始图形
= find(X); figure(gcf);
plothandle = plot(i,j,'.', 'Color','blue','MarkerSize',12);
axis();
%% 演化
for k = 1:50
N = X(n,:) + X(s,:) + X(:,e) + X(:,w) + X(n,e) + X(n,w) + X(s,e) + X(s,w); %邻居数
RAND = rand(m); %概率阵
X = X | (N.*RAND>0.99); %换代
= find(X); set(plothandle,'xdata',i,'ydata',j); %绘图
drawnow; pause(0.2); k
end
[ 本帖最后由 ChaChing 于 2010-6-25 23:55 编辑 ]
回复 地板 kettyx 的帖子
太太感谢你了,好厉害啊你再请问一下 你提到的 “ matlab的demo就有一个很经典的生命游戏life.m” ,我怎么找不到,我是6.5版本,我的matlab文件里只有一个"demos" 文件夹,里面是些网页,没有程序。但在命令框里输入life可运行,请问在哪里呢
[ 本帖最后由 ChaChing 于 2009-12-26 23:39 编辑 ]
回复 feirfei 的帖子
看原代码,输入edit life[ 本帖最后由 ChaChing 于 2009-12-26 23:41 编辑 ] 多谢sigma665! 已经帮了我好几次了,非常感谢你
对 地板 kettyx 的帮助,深表感谢,但我还是不知道怎么修改才能达到附件里的四个图的效果,如a 、b 取不同的值效果不一样;还有怎么出现图中的那些元胞的方格,我用 grid on 试过,但好像跟图中不一样
请大家帮帮我,感谢大家了
[ 本帖最后由 ChaChing 于 2009-12-26 23:42 编辑 ] 演化概率不一样得到的图不一样。演化概率的设计也算是元胞自动机应用的重要部分了,取决于具体的情况。
就像密码一样。猜不到。:@)
[ 本帖最后由 ChaChing 于 2009-12-26 23:43 编辑 ]
回复 10楼 kettyx 的帖子
非常感谢你的回复! 再请教一下 怎么出现图中的那些元胞的方格,我用 grid on 试过,但好像跟图中不一样 ! 还有 概率也是可以设的吧, 如你这个是随机的, (N.*RAND>0.99);但附件中好像是每次取固定的值,如 a=0.2,b=0.3 ; 怎么换成固定的呢,好像表达的也不是很清楚 我这个 变化概率 是 rand()>0.99 ,这个概率应该不是变化的吧。【以概率a×b变为1】,怎么用rand描述,楼主去研究研究吧。
哈,不好意思,我刚才试了一下pcolor不成功。
[ 本帖最后由 kettyx 于 2008-8-29 16:21 编辑 ]
回复 12楼 kettyx 的帖子
多谢你 ! 非常感谢 请问楼主,附件中的四个图是从哪篇文章得来的,我非常感兴趣,多谢! 四个图是不是火灾的演化?matlab网格
我也想知道附件中的matlab网格是怎么实现的?我试了很多办法都不行,请大家回复 imshow 函数
页:
[1]
2