24小时热门版块排行榜    

查看: 213  |  回复: 0

archon1988

新虫 (初入文坛)

[求助] Matlab大神帮忙看下程序谢谢

初始程序如下,本来的意图是生成一个随机离散的裂缝区域,如果裂缝能联通区域左右就输出联通路径图像,现在的需要是运行m次,生成m个不同的裂缝区域,其中可能有n个是联通的,返回n/m的值就好了,我加了一个for循环计数器但是每次都中断,怀疑是return的问题,但是不知道怎么修改,希望各位MATLAB大神帮忙看看,不甚感激!!!
clc
clear all;

num=300;

x1=unifrnd(0,20,1,num);
y1=unifrnd(0,20,1,num);
s=unifrnd(-pi/2,pi/2,1,num);
crack=zeros(500);
l=exprnd(2,1,num);

for n=1:num
    for i=-l(n)/2:0.02:l(n)/2
        theta=s(n);
        xx=x1(n)+i*cos(theta);
        yy=y1(n)+i*sin(theta);
        if round(xx*25)>0&&round(xx*25)<=500&&round(yy*25)>0&&round(yy*25)<=500
           crack(round(xx*25),round(yy*25))=1;
        end
%          plot(xx,yy);
%          hold on
    end
end
% axis([0,20,0,20]);   
figure,imshow(crack);
seedcount=1;
    for xxx=1:500
        if crack(xxx,1)==1
            seedx(seedcount)=xxx;
            seedy(seedcount)=1;
            seedcount=seedcount+1;
        end
    end
   
%%二维堆栈生长
seedcount=seedcount-1;
%像素点空间八邻域地址偏移量
nDy = [ -1 , 0 , 1 ,-1 , 1 ,-1 , 0 , 1 ];
nDx = [ -1 ,-1 , -1, 0 , 0 , 1 , 1 , 1 ];

%存储生长点的坐标
growqueX = zeros(1,500*500);
growqueY = zeros(1,500*500);

%标志堆栈的起点和终点   
%当nStart=nEnd, 表示堆栈中只有一个点   
nStart = 1;
nEnd = 1;

for seedindex = 1:seedcount
    mask=zeros(500);
        nStart = nEnd;
        growqueX(1,nEnd)        = seedx(seedindex);       
    growqueY(1,nEnd)        = seedy(seedindex);
   while nStart <= nEnd
        nCurrX = growqueX(1,nStart);
        nCurrY = growqueY(1,nStart);
                for k=1:8
                        xx = nCurrX + nDx(k);
                        yy = nCurrY + nDy(k);
                        if (xx <= 500) && (xx > 0) && (yy<=500) &&(yy>0)&&(mask(xx,yy)==0)&&(crack(xx,yy)==1)
              nEnd=nEnd+1;
              growqueX(1,nEnd) = xx;
              growqueY(1,nEnd) = yy;
              if yy==500;
                  figure,imshow(mask);
                  return
              end
              mask(xx, yy) = 1;
            end
        end
            nStart= nStart+1;
    end
end
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 archon1988 的主题更新
信息提示
请填处理意见