24小时热门版块排行榜    

查看: 7876  |  回复: 26
【奖励】 本帖被评价16次,作者dbb627增加金币 11.8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

[资源] matlab生成随机行走网格 模拟材料生长

这个板块帖子太少,发一个增加点人气,原始问题见
http://muchong.com/bbs/viewthread.php?tid=3723739
算法如下:
随机生长的步骤如下:
1) 建立材料生长的初始网格,并设定所有网格材料皆为主相;
2) 定义生长相的生长核分布概率数,Cd,其大小不大于此生长相的体积分数。对系统网格的每个单元采用在(0,1)内均匀分布的随机函数赋随机数,其值若小于Cd,则认为此单元为生长相的一个生长核。其次,对每一个生长核,使其从各个方向上向其周围临近网格单元扩张,生长时,每一个方向上需设定一个方向增长概率数,Di,下标i代表方向。每一个生长核,其周围各个单元均会被赋值一个随机数,其值若不大于该方向上的方向增长概率数,则此单元同样成为一个新的生长相。
3)重复步骤二直至此生长相的体积分数到达其给定值。
原帖给的程序不完整,这里重写,并优化了
CODE:
function growth
%作者:dbb627
%2011.10.27
%======设定初值=============
clc;clear;
rand('state',0);
set(gcf,'DoubleBuffer','on');%消除振动
Cd=0.01;%生长核分布概率数
Vr=0.3;%生长相的体积分数
global kn
kn=500;
p=[1/8 1/8 1/8 1/8 1/4 1/4 1/4 1/4];%方向增长概率数
A=rand(kn,kn);%初始网格kn×kn
A(find(A<=Cd))=0;%黑色,生长核
A(find(A>Cd))=1;%白色
imshow(A,'InitialMagnification','fit')%初始图像
k=0;%迭代步骤
N=kn*kn;%格点数
[x,y]=find(A==0);%生长核脚标
Ixy=sub2ind([kn,kn],x,y); % 转化脚标为索引
gn=length(Ixy);%生长核计数
Vs=gn/N;       %体积分数
ti=title(['time = 0 体积分数=',num2str(Vs)],'Fontsize',14,'Fontname','Times new roman'); % 在图题处实时显示时间
%===========================
while Vs     xL=x-1;xR=x+1;
    xL(xL==0)=1;% 对近邻进行边界条件处理
    xR(xR==kn+1)=kn;% 对近邻进行边界条件处理
    yD=y-1;yU=y+1;
    yD(yD==0)=1;% 对近邻进行边界条件处理
    yU(yU==kn+1)=kn;% 对近邻进行边界条件处理
   
    InE=sub2ind([kn,kn],xR,y); % 右方转化脚标为索引
    InS=sub2ind([kn,kn],x,yD); % 下方转化脚标为索引
    InW=sub2ind([kn,kn],xL,y); % 左方转化脚标为索引
    InN=sub2ind([kn,kn],x,yU); % 上方转化脚标为索引
   
    InEN=sub2ind([kn,kn],xR,yU); % 右上方转化脚标为索引
    InES=sub2ind([kn,kn],xR,yD); % 右下方转化脚标为索引
    InWS=sub2ind([kn,kn],xL,yD); % 左下方转化脚标为索引
    InWN=sub2ind([kn,kn],xL,yU); % 左上方转化脚标为索引
     %===用函数的方法写八个方向的生长迭代=====
          [A,Ixy]=growthmod(InE,Ixy,p(5),A);  
          [A,Ixy]=growthmod(InS,Ixy,p(6),A);
          [A,Ixy]=growthmod(InW,Ixy,p(7),A);
          [A,Ixy]=growthmod(InN,Ixy,p(8),A);
          [A,Ixy]=growthmod(InEN,Ixy,p(1),A);
          [A,Ixy]=growthmod(InES,Ixy,p(2),A);
          [A,Ixy]=growthmod(InWS,Ixy,p(3),A);
          [A,Ixy]=growthmod(InWN,Ixy,p(4),A);
  %==========做图========   
    [x,y]=find(A==0);
    Ixy=sub2ind([kn,kn],x,y);
    gn=length(Ixy);
    Vs=gn/N %体积分数
    k=k+1
    pause(0.1)
    imshow(A,'InitialMagnification','fit')%更新图像
    title(['time = ',num2str(k),'体积分数=',num2str(Vs)],'Fontsize',14,'Fontname','Times new roman'); % 更新时间参数
   
end
   
function [A,Ixy]=growthmod(Ind1,Indxy,p,A)
%Ind1 当前方向索引
%,Indxy 当前生长核索引的
%p 当前方向的概率值
%A 当前的生长矩阵
global kn
    CInE=setdiff(Ind1,Indxy);%提取非生长核边界格点索引
    En=rand(1,length(CInE));%各个单元均会被赋值一个随机数
    [i,j]=find(En<=p);%大于该方向上的方向增长概率数,则此单元同样成为一个新的生长相
    pE=sub2ind([1,length(CInE)],i,j);%新的生长相索引的下标
    A(CInE(pE))=0; %更新生长矩阵
    [x,y]=find(A==0);%更新生长核坐标
    Ixy=sub2ind([kn,kn],x,y);%更新生长核索引


生长动画

[ Last edited by dbb627 on 2011-10-27 at 10:19 ]
回复此楼

» 收录本帖的淘帖专辑推荐

科研工具资源Nick 资源收集 小木虫matlab全部资源 科研工具专辑
科研相关 Matlab Study 自己阅读 晶粒长大及相关模拟

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

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

林外听涛

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

版主,我想问一下为什么我运行你的程序出来的是静态图,就显示的0时刻的。想请问一下你的动态生长图是怎么处理的。楼主方便留个联系方式吗。
我的Q是:335469407
20楼2014-12-27 14:46:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 27 个回答

匿名

用户注销 (小有名气)


本帖仅楼主可见
2楼2011-10-27 09:49:32
已阅   申请计算强帖   回复此楼   编辑   查看我的主页

cxguo

新虫 (正式写手)


★★★★★ 五星级,优秀推荐

引用回帖:
1楼: Originally posted by dbb627 at 2011-10-27 09:20:06:
这个板块帖子太少,发一个增加点人气,原始问题见
http://muchong.com/bbs/viewthread.php?tid=3723739
算法如下:
随机生长的步骤如下:
1) 建立材料生长的初始网格,并设定所有网格材料皆为主相; ...

楼主高手啊,请教以下可以用Matalab画原子生长模拟图不?三位岛状生长的。
4楼2011-10-28 12:41:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
4楼: Originally posted by cxguo at 2011-10-28 12:41:57:
楼主高手啊,请教以下可以用Matalab画原子生长模拟图不?三位岛状生长的。

有生长的模式吗,你写出来看看,我不是研究材料。不太知道三位岛状生长。
5楼2011-10-28 13:53:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:08 by lotyj5cz79
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 3/150 2026-02-18 06:53 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[基金申请] 过年走亲戚时感受到了所开私家车的鄙视链 +3 瞬息宇宙 2026-02-15 5/250 2026-02-16 14:23 by aspect3000
[基金申请] 情人节自我反思:在爱情中有过遗憾吗? +4 瞬息宇宙 2026-02-15 5/250 2026-02-15 22:28 by baiboxie
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见