• empty99
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2021-04-18 14:01
    上传日期
随机生成骨料, 混凝土多边形随机骨料蒙特卡洛随机分布的MATLAB数值模拟
ConcreteBone2d.rar
  • ConcreteBone2d(1).m
    1.2KB
  • ConcreteBone2d.m
    1.2KB
内容介绍
function [Cir]=ConcreteBone2d(Range,Num,Rmin,Rmax) cum=0; for i=1:1000000 if cum==Num break; end x=rand(1)*(Range(1,2)-Range(1,1))+Range(1,1); y=rand(1)*(Range(2,2)-Range(2,1))+Range(2,1); r=rand(1)*(Rmax-Rmin)+Rmin; if (x-r>Range(1,1) & x+r<Range(1,2)) & (y-r>Range(2,1) & y+r<Range(2,2)) if cum==0 cum=cum+1; Cir(cum,:)=[x y r]; else sum=0; for j=1:cum D=sqrt((Cir(j,1)-x)^2+(Cir(j,2)-y)^2); if D<Cir(j,3)+r break; else sum=sum+1; end end if sum==cum cum=cum+1; Cir(cum,:)=[x y r]; end end end end plot([Range(1,:) Range(1,2) Range(1,1) Range(1,1)],[Range(2,1) Range(2,1) Range(2,2) Range(2,2) Range(2,1)],'-b','linewidth',3); hold on; fill([Range(1,:) Range(1,2) Range(1,1) Range(1,1)],[Range(2,1) Range(2,1) Range(2,2) Range(2,2) Range(2,1)],'y'); theta=0:5*pi/180:360*pi/180; for i=1:Num xx=Cir(i,3)*cos(theta)+Cir(i,1); yy=Cir(i,3)*sin(theta)+Cir(i,2); plot(xx,yy,'-r'); fill(xx,yy,'c'); end axis image;
评论
    相关推荐