24小时热门版块排行榜    

查看: 520  |  回复: 1

痞子ppt

铜虫 (初入文坛)

[求助] 在Matlab上模拟DLA的吸附,请大神帮忙修改下代码,谢谢

%
clc;clear;close all;
rand('state',0);
set(gcf,'DoubleBuffer','on');
N=256; % 生成状态矩阵大小的控制参数
S=ones(N); % 生成状态矩阵S
% S(N/2,N/4:N*3/4)=0; % 设置状态矩阵的初始值
S(N/2:N*3/4,N/2)=0; % 设置状态矩阵的初始值
Ii=imshow(S); % 显示状态矩阵
ti=title(['time = 0',', N=0'],'Fontsize',14,'Fontname','Times New Roman'); % 显示时间
T=0; % 记录时间的参数
for k=1:30000; % 循环计算
    xt=4; % 产生粒子的位置
    yt=N/2; % 产生粒子的位置
    Ss=0; % 控制下面循环是否终止的参数
    while Ss<1; % 计算当前粒子的吸附过程
        [dx,dy]=choose_D(0.25,0.25,0.25,0.25); % 计算粒子位移量
        xt=xt+dx; % 计算下一时刻粒子的位置
        yt=yt+dy; % 计算下一时刻粒子的位置
        if xt<2.5|xt>N-1.5||yt<2.5|yt>N-1.5; % 判断粒子是否逸出边界           
            Ss=2; % 把Ss赋值为2,从而可以退出循环
        end
        if [S(xt+1,yt)+S(xt-1,yt)+S(xt,yt+1)+S(xt,yt-1)]<3.5; % 判断近邻是否有粒子
            S(xt,yt)=0; % 固定当前运动的粒子
            Ss=2; % 把Ss赋值为2,从而可以退出循环
        end               
    end
    set(Ii,'CData',S); % 显示当前状态矩阵
    T=T+1; % 累加时间参数
    set(ti,'String',['time = ',num2str(T),', N=',num2str(sum(sum(1-S))-[N/4+1])]); % 更新时间参数
    pause(0.01); % 暂停一下,显示动画效果
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

痞子ppt

铜虫 (初入文坛)

自己先顶下,求助!
2楼2013-10-11 08:35:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 痞子ppt 的主题更新
信息提示
请填处理意见