24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1264  |  回复: 10

痞子ppt

铜虫 (初入文坛)

[求助] 在matlab上运行,大神帮忙调试下,是搞分形模拟的DLA

function DLAmodel     %Fractal growth modeling by DLA
L = 151 ;
axis ( [ 0 L 0 L ])
set (gcf ,‘color’ ,‘w’ )   %将图形背景设置为白色
Xhalf = floor (L/ 2) + 1 ;
Yhalf = Xhalf ;
hold on
X = sparse (L , L) ;
X(xhalf , yhalf ) = 1 ; %设定 “种子” 位置
[ i , j ] = find (X) ;
plothdl = plot (i , j ,‘b’ ) ;
axis off
axis square
p = - 1 : 1 ;
Times = 15000 ; %设定随机产生粒子的个数
for count = 1 ∶Times
  sita = rand*2*pi ;   %生成一个随机点
R = floor (L/2) ;
kx = floor (Xhalf + R*cos( sita) ) ;
ky = floor ( Yhalf + R*sin( sita) ) ;
plot2 = plot (kx , ky ,‘r’ ) ;
set (plot2 ,‘marker’ ,‘d’,‘markersize’, 8)
drawnow   %动态演示随机产生粒子的运动模式
flag = 0 ;
[ i , j ] = find (X) ;
lr = lengt h (i) ;
while kx < L - 1 &ky < L - 1 &kx > 1 &ky > 1 &flag = = 0 ,
  N = sum( sum(X(kx + p , ky + p) ) ) ; %统计与随机粒子相邻的 “种子团簇” 粒子的个数
    if N > 0
     X(kx , ky) = 1 ;
     flag = 1 ;
   else
  ran = rand ;   %布朗运动控制
   if ran > 2/3
    kx = kx + 1 ;
  elseif ran < 1/3
    kx = kx - 1 ;
   end
    ran = rand ;
     if ran > 2/ 3
     ky = ky + 1 ;
    el seif ran < 1/ 3
     ky = ky - 1 ;
    end
   set (plot2 ,‘xdata’ , kx ,‘ydata’, ky) ;
   end
  end
cla ;
[ i , j ] = find (X) ;
plot (i , j ,‘b.’ )
drawnow
end
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

zhangzhiguang

至尊木虫 (文坛精英)


csgt0: 金币+1, 谢谢 2013-06-28 11:30:36
这是文件,防止复制时字体变化

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : DLAmodel.m
  • 2013-06-27 12:36:53, 1.34 K
好好学习,天天向上!
9楼2013-06-27 12:37:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

痞子ppt

铜虫 (初入文坛)

2楼2013-05-28 09:16:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangzhiguang

至尊木虫 (文坛精英)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
csgt0: 金币+1, 谢谢 2013-05-31 11:26:53
痞子ppt: 金币+10, 有帮助 2013-06-04 08:43:23
大体问题没有,有些标点可能是你发帖的时候得问题,像''等,其中"X(xhalf , yhalf ) = 1 ; %设定 “种子” 位置"中xhalf , yhalf 中的x,y都要大写,有一些变量可能没用到,像lr,另外,while中的&是不是改为&&更好一些
好好学习,天天向上!
3楼2013-05-28 13:43:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

痞子ppt

铜虫 (初入文坛)

引用回帖:
3楼: Originally posted by zhangzhiguang at 2013-05-28 13:43:44
大体问题没有,有些标点可能是你发帖的时候得问题,像''等,其中"X(xhalf , yhalf ) = 1 ; %设定 “种子” 位置"中xhalf , yhalf 中的x,y都要大写,有一些变量可能没用到,像lr,另外,while中的&是不是 ...

谢谢哈,
4楼2013-06-04 08:44:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bihaio

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by zhangzhiguang at 2013-05-28 13:43:44
大体问题没有,有些标点可能是你发帖的时候得问题,像''等,其中"X(xhalf , yhalf ) = 1 ; %设定 “种子” 位置"中xhalf , yhalf 中的x,y都要大写,有一些变量可能没用到,像lr,另外,while中的&是不是 ...

2楼主请问你能是模拟出来嘛,报错啊它,还有就是drawnow这里它好像没用上啊?求助。。谢谢啊
5楼2013-06-26 20:37:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangzhiguang

至尊木虫 (文坛精英)

引用回帖:
5楼: Originally posted by bihaio at 2013-06-26 20:37:06
2楼主请问你能是模拟出来嘛,报错啊它,还有就是drawnow这里它好像没用上啊?求助。。谢谢啊...

要将其中的一些量修改,我在帖子里已指出
好好学习,天天向上!
6楼2013-06-27 09:39:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bihaio

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by zhangzhiguang at 2013-06-27 09:39:22
要将其中的一些量修改,我在帖子里已指出...

能在具体些吗,我不太会啊,而且改了,谢谢了啊!
7楼2013-06-27 11:13:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangzhiguang

至尊木虫 (文坛精英)

【答案】应助回帖

★ ★
csgt0: 金币+2, 应助指数+1, 谢谢 2013-06-28 11:30:30
这是修改后的代码,改动不大,还有运行后的图
function DLAmodel     %Fractal growth modeling by DLA
L = 151 ;
axis ([ 0 L 0 L ])
set (gcf,'color','w' ) %将图形背景设置为白色
Xhalf = floor (L/2) + 1 ;
Yhalf = Xhalf ;
hold on
X = sparse (L,L) ;
X(Xhalf,Yhalf ) = 1 ; %设定 “种子” 位置
[i,j] = find (X) ;
  plot(i,j,'b' ) ;
axis off
axis square
p = - 1 : 1 ;
Times = 15000 ; %设定随机产生粒子的个数
for count = 1 :Times
sita = rand*2*pi ; %生成一个随机点
R = floor (L/2) ;
kx = floor (Xhalf + R*cos( sita) ) ;
ky = floor (Yhalf + R*sin( sita) ) ;
plot2 = plot (kx , ky ,'r') ;
set (plot2 ,'marker' ,'d','markersize', 8)
drawnow%动态演示随机产生粒子的运动模式
flag = 0 ;
[ i,j] = find (X) ;
lr = length (i) ;
while kx < L - 1 &&ky < L - 1 &&kx > 1 &&ky > 1 &&flag == 0 ,
      N = sum( sum(X(kx+p ,ky + p))) ; %统计与随机粒子相邻的 “种子团簇” 粒子的个数
       if N > 0
         X(kx , ky) = 1 ;
         flag = 1 ;
       else
         ran = rand ; %布朗运动控制      
         if ran > 2/3
           kx = kx + 1 ;
        elseif ran < 1/3
           kx = kx - 1 ;
         end
         ran = rand ;
         if ran > 2/3
            ky = ky + 1 ;
        elseif ran < 1/ 3
            ky = ky - 1 ;
         end
        set (plot2 ,'xdata' , kx ,'ydata', ky) ;
      end
end
cla ;
[ i,j ] = find (X) ;
plot (i,j,'b.' )
drawnow
end
在matlab上运行,大神帮忙调试下,是搞分形模拟的DLA
untitled.jpg

好好学习,天天向上!
8楼2013-06-27 12:30:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

痞子ppt

铜虫 (初入文坛)

送红花一朵
10楼2013-09-11 11:23:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 痞子ppt 的主题更新
信息提示
请填处理意见