24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1243  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

碗碗儿2954

新虫 (小有名气)

[交流] 简单的MATLAB几何建模问题 已有2人参与

为了建立一系列随机分布的小球,编写程序如下,请懂的人帮忙看看,真是没辙了!   
    k=1;
    i=2:50;
    m=1:49;
    R(50)=ones;
    V(50)=ones;
    VSUM(50)=ones;
    [X,Y,Z]=sphere(50);
    R(1)=rand(1)/10;
    V(1)=(4/3)*pi*R(1)^3;
    originX=rand(1,50);
    originY=rand(1,50);
    originZ=rand(1,50);
    surf(X*R(1)+originX(1),Y*R(1)+originY(1),Z*R(1)+originZ(1));
    VSUM(1)=V(1);
for i=2:50
    R(i)=rand(1)/10;
    V(i)=(4/3)*pi*R(i)^3;
end
while (VSUM<v)
     for m=1:i-1
         A=R(i)+R(m);
         B=sqrt((originX(i)-originX(m))^2+(originY(i)-originY(m))^2+(originZ(i)-originZ(m))^2);
         if (A<B)
            k=k+1;
         end
         continue
     end
end
if (k==i)
      surf(X*R(i)+originX(i),Y*R(i)+originY(i),Z*R(i)+originZ(i));
      fprintf('The volume of the ith sphere is %12.5f\n',V(i));
      VSUM(i)=VSUM(i-1)+V(i);
      hold on
end
axis equal
回复此楼

» 猜你喜欢

努力!
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

碗碗儿2954

新虫 (小有名气)

送红花一朵
引用回帖:
5楼: Originally posted by xiegangmai at 2016-01-28 12:06:46
以下代码应该能实现楼主的要求。
算法不一定简练,如
1)判断任意球心距离与相应球半径和大小,可采用数组矢量计算避免循环;
2)比较总体积与设定体积大小,这里需要讨论,有可能这次while循环中随机生成的半径 ...

您的程序写的真好,首先通过判断逻辑变量来决定是否生成小球,然后m=m+1避免了我的两个 for 语句嵌套操作,再有break和continue是我们非专业人士所困惑的,最后像 : 这类的符号我也是很佩服,说再多还是感谢您的宝贵时间!
努力!
6楼2016-01-29 09:46:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

碗碗儿2954

新虫 (小有名气)

每次输进去MATLAB就卡住了,难道是死循环了?
努力!
2楼2016-01-27 11:10:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
碗碗儿2954: 金币+10 2016-01-28 09:35:50
简单写了下代码,楼主参考参考。
CODE:
function spheres

n = 100;
r = rand( 1, n ) / 10;

for i = 1 : n
    color_value = rand( 1, 3 ); % 颜色
    position = rand( 1, 3 );  % 球心坐标
     [ x, y, z ] = unitsphere;
     
     x =  r( i ) * x + position( 1 );
     y =  r( i ) * y + position( 2 );
     z =  r( i ) * z + position( 3 );
     
     h = surf( x, y, z);
     set( h, 'EdgeColor', 'none', ...
         'FaceColor', color_value  );
     hold on
end
axis equal

V = 4 * pi * r .^3 / 3;
VSUM = sum( V )

function [ x, y, z ] = unitsphere

r = 1; % 单位圆
n = 20;

theta = ( -n : 2 : n ) / n * pi;
phi = ( -n : 2 : n )' / n * pi / 2;

cosphi = cos( phi );
cosphi( 1 ) = 0;
cosphi( n + 1 ) = 0;
sintheta = sin( theta );
sintheta( 1 ) = 0;
sintheta( n + 1 ) = 0;

x = r * cosphi * cos( theta );
y = r * cosphi * sintheta;
z = r * sin( phi ) * ones( 1, n + 1 );

明德厚学、求是创新
3楼2016-01-27 16:41:01
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

碗碗儿2954

新虫 (小有名气)

引用回帖:
3楼: Originally posted by xiegangmai at 2016-01-27 16:41:01
简单写了下代码,楼主参考参考。

function spheres

n = 100;
r = rand( 1, n ) / 10;

for i = 1 : n
    color_value = rand( 1, 3 ); % 颜色
    position = rand( 1, 3 );  % 球心坐标
      = unit ...

好心人您好,我看了您的程序是可行的,但是我想要通过比较第 i 个球和前面生成的 (i-1)的球半径和与球心距离的大小来避免球体之间的重合,在总体积小于比如 v 的情况下,由于position只是任意的1*3数组,并不能存储第 i 个球体的位置信息?我想出的以下语句好像也有问题
while (VSUM<v)
     for m=1:i-1
         A=R(i)+R(m);
         B=sqrt((positionX(i)-positionX(m))^2+(positionY(i)-positionY(m))^2+(positionZ(i)-positionZ(m))^2);
         if (A<B)
            k=k+1;
         end
         continue
     end
end
努力!
4楼2016-01-28 09:14:49
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 268分085602化学工程调剂 +29 月照花林。 2026-04-09 29/1450 2026-04-12 18:16 by zhouxiaoyu
[考研] 求助调剂,跨调 +12 X十甫寸Y 2026-04-11 12/600 2026-04-12 10:20 by zhouyuwinner
[考研] 288求调剂,一志愿华南理工大学071005 +18 ioodiiij 2026-04-08 18/900 2026-04-11 20:25 by liyun12321
[考研] 求调剂 +3 胃痉挛累了 2026-04-11 5/250 2026-04-11 14:13 by luhong1990
[考研] 调剂 +4 电气300求调剂不 2026-04-08 7/350 2026-04-11 10:44 by 紫曦紫棋
[考研] 085404 293求调剂 +9 勇远库爱314 2026-04-06 10/500 2026-04-11 10:36 by 紫曦紫棋
[考研] 0854调剂 +8 950824he@ 2026-04-09 8/400 2026-04-11 10:11 by zhq0425
[考研] 考研调剂 +26 硕星赴 2026-04-09 27/1350 2026-04-10 22:24 by 猪会飞
[考研] 中科院总分315求调剂 +8 lallalh 2026-04-09 8/400 2026-04-10 19:30 by dick_runner
[考研] 一志愿京区985,085401,与本科专业一致,电子信息工程, +4 阳光开朗的男孩 2026-04-10 4/200 2026-04-10 18:27 by shenrf
[考研] 一志愿鲁东大学071000生物学学硕初试分数276求调剂 +20 慕绝cc 2026-04-09 24/1200 2026-04-10 10:22 by xujun0624
[考研] 本科211 工科085400 280分求调剂 可跨专业 +3 LZH(等待调剂中 2026-04-09 3/150 2026-04-09 21:29 by wutongshun
[考研] 求机械专硕297第二批调剂 +5 拾柒12。 2026-04-08 5/250 2026-04-09 16:43 by 允当适度
[考研] 368化学求调剂 +13 wwwwabcde 2026-04-07 14/700 2026-04-09 14:47 by heaven_jay
[考研] 机械专硕273请求调剂 +6 庚申壬申 2026-04-07 6/300 2026-04-08 22:41 by bljnqdcc
[考研] 一志愿郑州大学085600求调剂 +21 吃的不少 2026-04-05 24/1200 2026-04-08 16:47 by sunhuadong
[考研] 085602调剂 初试总分335 +3 19123253302 2026-04-06 3/150 2026-04-07 18:00 by jp9609
[考研] 22408 调剂材料 +7 我叫ez 2026-04-06 8/400 2026-04-07 17:12 by 蓝云思雨
[考研] 297分083200求助 +9 aekx 2026-04-05 9/450 2026-04-06 20:57 by flysky1234
[考研] 362求调剂一志愿中国石油大学 +4 我要考大 2026-04-06 6/300 2026-04-06 14:11 by 无际的草原
信息提示
请填处理意见