24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1632  |  回复: 3

爱笑的眼睛na

金虫 (初入文坛)

[求助] 随机生长法模拟多孔介质的matlab二维代码改写三维,结果出来还是二维 已有2人参与

本人根据http://muchong.com/html/201111/3749191.html随机生长法模拟多孔介质的二维代码编写了一个三维代码,但结果出来还是二维的,请求各位大神查一下错误在哪儿,并给出解决的方法,谢谢啦!
代码如下:
%======设定初值=============
clc;clear;
rand('state',0);
set(gcf,'DoubleBuffer','on');%消除振动
Cd=0.01;%生长核分布概率数
Vr=0.01;%生长相的体积分数
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;%白色
m=0;%迭代步骤
N=kn*kn*kn;%格点数
[x,y,z]=find(A==0);%生长核脚标
[y1,z] = ind2sub([kn,kn],y);
Ixy1z = sub2ind([kn,kn,kn],x,y1,z);
gn=length(Ixy1z);%生长核计数
Vs=gn/N %体积分数
%===========================
while Vs<0.001
     xW=x-1;xE=x+1;
    xW(xW==0)=1;% 对近邻进行边界条件处理
    xE(xE==kn+1)=kn;% 对近邻进行边界条件处理
    y1N=y1-1;y1S=y1+1;
    y1N(y1N==0)=1;% 对近邻进行边界条件处理
    y1S(y1S==kn+1)=kn;% 对近邻进行边界条件处理
   zB=z-1;zT=z+1;
    zB(zB==0)=1;% 对近邻进行边界条件处理
    zT(zT==kn+1)=kn;% 对近邻进行边界条件处理
   
    InE=sub2ind([kn,kn],xE,z); % 右方转化脚标为索引
    InB=sub2ind([kn,kn],x,zB); % 下方转化脚标为索引
    InW=sub2ind([kn,kn],xW,z); % 左方转化脚标为索引
    InT=sub2ind([kn,kn],x,zT); % 上方转化脚标为索引
     InS=sub2ind([kn,kn],x,y1N); % 下方转化脚标为索引
    InN=sub2ind([kn,kn],x,y1S); % 上方转化脚标为索引

     InET=sub2ind([kn,kn],xE,zT); % 右上方转化脚标为索引
    InEB=sub2ind([kn,kn],xE,zB); % 右下方转化脚标为索引
    InWB=sub2ind([kn,kn],xW,zB); % 左下方转化脚标为索引
InWT=sub2ind([kn,kn],xW,zT); % 左上方转化脚标为索引
  InEN=sub2ind([kn,kn],xE,y1N); % 右上方转化脚标为索引
    InES=sub2ind([kn,kn],xE,y1S); % 右下方转化脚标为索引
    InWS=sub2ind([kn,kn],xW,y1S); % 左下方转化脚标为索引
InWN=sub2ind([kn,kn],xW,y1N); % 左上方转化脚标为索引
InTS=sub2ind([kn,kn],y1S,zT); % 右上方转化脚标为索引
    InBS=sub2ind([kn,kn],y1S,zB); % 右下方转化脚标为索引
    InBN=sub2ind([kn,kn],y1N,zB); % 左下方转化脚标为索引
InTN=sub2ind([kn,kn],y1N,zT); % 左上方转化脚标为索引

%==========做图========   
CInE=setdiff(InE,Ixy1z); En=rand(1,length(CInE));[i,j,k]=find(En<=p(5));pE=sub2ind([1,length(CInE)],i,j,k);
    A(CInE(pE))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInT= setdiff(InT,Ixy1z);Tn=rand(1,length(CInT));[i,j,k]=find(Tn<=p(6));pT=sub2ind([1,length(CInT)],i,j,k);
    A(CInT(pT))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInW=setdiff(InW,Ixy1z);Wn=rand(1,length(CInW));[i,j,k]=find(Wn<=p(7));pW=sub2ind([1,length(CInW)],i,j,k);
     A(CInW(pW))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInB=setdiff(InB,Ixy1z);Bn=rand(1,length(CInB));[i,j,k]=find(Bn<=p(8));pB=sub2ind([1,length(CInB)],i,j,k);
      A(CInB(pB))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInEB=setdiff(InEB,Ixy1z);EBn=rand(1,length(CInEB));[i,j,k]=find(EBn<=p(8));pEB=sub2ind([1,length(CInEB)],i,j,k);
      A(CInEB(pEB))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInET=setdiff(InET,Ixy1z);ETn=rand(1,length(CInET));[i,j,k]=find(ETn<=p(8));pET=sub2ind([1,length(CInET)],i,j,k);
      A(CInET(pET))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInWT=setdiff(InWT,Ixy1z);WTn=rand(1,length(CInWT));[i,j,k]=find(WTn<=p(8));pWT=sub2ind([1,length(CInWT)],i,j,k);
      A(CInWT(pWT))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInWB=setdiff(InWB,Ixy1z);WBn=rand(1,length(CInWB));[i,j,k]=find(WBn<=p(8));pWB=sub2ind([1,length(CInWB)],i,j,k);
      A(CInWB(pWB))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInS= setdiff(InS,Ixy1z);Sn=rand(1,length(CInS));[i,j,k]=find(Sn<=p(5));pS=sub2ind([1,length(CInS)],i,j,k);
    A(CInS(pS))=0;
[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInN=setdiff(InN,Ixy1z);Nn=rand(1,length(CInN));[i,j,k]=find(Nn<=p(8));pN=sub2ind([1,length(CInN)],i,j,k);
      A(CInN(pN))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInEN=setdiff(InEN,Ixy1z);ENn=rand(1,length(CInEN));[i,j,k]=find(ENn<=p(8));pEN=sub2ind([1,length(CInEN)],i,j,k);
      A(CInEN(pEN))=0;
   [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInES=setdiff(InES,Ixy1z);ESn=rand(1,length(CInES));[i,j,k]=find(ESn<=p(8));pES=sub2ind([1,length(CInES)],i,j,k);
      A(CInES(pES))=0;
   [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInWS=setdiff(InWS,Ixy1z);WSn=rand(1,length(CInWS));[i,j,k]=find(WSn<=p(8));pWS=sub2ind([1,length(CInWS)],i,j,k);
      A(CInWS(pWS))=0;
   [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInWN=setdiff(InWN,Ixy1z);WNn=rand(1,length(CInWN));[i,j,k]=find(WNn<=p(8));pWN=sub2ind([1,length(CInWN)],i,j,k);
      A(CInWN(pWN))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInTS=setdiff(InTS,Ixy1z); TSn=rand(1,length(CInTS));[i,j,k]=find(TSn<=p(8));pTS=sub2ind([1,length(CInTS)],i,j,k);
      A(CInTS (pTS))=0;
       [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInBS=setdiff(InBS,Ixy1z);BSn=rand(1,length(CInBS));[i,j,k]=find(BSn<=p(8));pBS=sub2ind([1,length(CInBS)],i,j,k);
      A(CInBS(pBS))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInBN=setdiff(InBN,Ixy1z); BNn=rand(1,length(CInBN));[i,j,k]=find(BNn<=p(8));pBN=sub2ind([1,length(CInBN)],i, j,k);
      A(CInBN (pBN))=0;
    [x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

CInTN=setdiff(InTN,Ixy1z); TNn=rand(1,length(CInTN));[i,j,k]=find(TNn<=p(8));pTN=sub2ind([1,length(CInTN)],i, j,k);
      A(CInTN (pTN))=0;
     [x,y1,z]=find(A==0);
     Ixy1z=sub2ind([kn,kn,kn],x,y1,z);

[x,y1,z]=find(A==0);
    Ixy1z=sub2ind([kn,kn,kn],x,y1,z);
gn=length(Ixy1z);
    Vs=gn/N %体积分数

    m=m+1
    pause(0.1)
    imshow(A,'InitialMagnification','fit')%更新图像
    title('time=','Fontsize',14,'Fontname','Times new roman'); % 更新时间参数
   
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengyuqiya

新虫 (初入文坛)

楼主程序写出来了么 我最近也在弄这个 不知道怎么做
2楼2016-06-22 19:51:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengyuqiya

新虫 (初入文坛)

【答案】应助回帖

你最早的A生成的就是个二维数组 所以后面全是二维计算的
inshow好像也只能画二维的图像
3楼2016-06-22 19:53:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

abc5852362

新虫 (初入文坛)

【答案】应助回帖

Z 变量 没有应用上,基本不起作用
4楼2018-08-06 17:03:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 爱笑的眼睛na 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 324求调剂 +6 想上学求调 2026-04-02 6/300 2026-04-02 13:48 by SZW_UJN
[考研] 311求调剂 +14 蓝月亮亮 2026-03-30 14/700 2026-04-02 12:18 by 1753564080
[考研] 348求调剂 +6 小懒虫不懒了 2026-03-27 7/350 2026-04-02 11:18 by sanrepian
[考研] 085600,材料与化工321分,求调剂 +13 大馋小子 2026-03-27 13/650 2026-04-02 10:48 by sanrepian
[考研] 302求调剂一志愿北航070300,本科郑大化学 +8 圣日耳曼条 2026-04-01 11/550 2026-04-02 07:40 by chemdavid
[考研] 085410 一志愿211 22408分数359求调剂 +3 123456789qw 2026-03-31 4/200 2026-04-02 00:06 by 义文wang
[硕博家园] 博一被送出联培感觉不适应怎么办 +3 全村的狗 2026-03-31 3/150 2026-04-01 10:44 by 328838485
[考研] 0856材料化工调剂 总分330 +18 zhubinhao 2026-03-27 18/900 2026-04-01 09:37 by oooqiao
[考研] 一志愿华东师范大学有机化学专业,初试351分,复试被刷求调剂! +9 真名有冰 2026-03-29 10/500 2026-03-31 18:01 by xhai2011
[考研] 318求调剂 +10 陈晨79 2026-03-30 10/500 2026-03-31 17:37 by 544594351
[考研] 求调剂 +9 akdhjs 2026-03-31 10/500 2026-03-31 17:14 by zhyzzh
[考研] 322求调剂:一志愿湖南大学 材料与化工(085600),已过六级。 +10 XX小邓 2026-03-29 10/500 2026-03-31 16:46 by 不吃魚的貓
[考研] 一志愿中海洋材料357 +4 麦恩莉. 2026-03-30 4/200 2026-03-31 14:35 by 记事本2026
[考研] 266分,求材料相关专业调剂 +10 哇呼哼呼哼 2026-03-30 12/600 2026-03-31 11:00 by 熊一刀
[考研] 262求调剂 +7 ZZ..000 2026-03-30 8/400 2026-03-31 10:05 by cal0306
[考研] 282求调剂 +3 呼吸都是减肥 2026-03-31 3/150 2026-03-31 10:00 by wangjy2002
[考研] 吉大生物学326分求调剂 +3 sunnyupup 2026-03-31 3/150 2026-03-31 09:28 by longlotian
[考研] 304求调剂 +6 曼殊2266 2026-03-27 6/300 2026-03-28 14:10 by 唐沐儿
[考研] 298调剂 +3 jiyingjie123 2026-03-27 3/150 2026-03-27 11:57 by wxiongid
[考研] 调剂 +3 李嘉图·S·路 2026-03-27 3/150 2026-03-27 11:19 by wangjy2002
信息提示
请填处理意见