24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3857  |  回复: 6

husthc

木虫 (正式写手)

[求助] matlab中如何实现在一球面上均匀的随机取点已有1人参与

matlab中如何实现在一球面上均匀的随机取点。
原来我采取以下方法:
phi=rand(n,1);
theta=rand(n,1);

x=r.*sin(Theta).*cos(Phi);
y=r.*sin(Theta).*sin(Phi);
z=r.*cos(Theta);

这样好像不是关于球面均匀取点的;求高手指点
回复此楼

» 猜你喜欢

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

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

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
husthc: 金币+8, 谢谢参与 2012-08-29 22:03:23
如果要均匀的话,只需要随机取一个点或两个点,其他点通过关系计算的吧。所有都随机取得肯定不是均匀的。
showmethemoney
2楼2012-06-29 10:01:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

试试sphere函数,好像可以的
showmethemoney
3楼2012-06-29 10:24:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

husthc

木虫 (正式写手)

引用回帖:
2楼: Originally posted by csgt0 at 2012-06-29 10:01:31
如果要均匀的话,只需要随机取一个点或两个点,其他点通过关系计算的吧。所有都随机取得肯定不是均匀的。

这里的均匀当然不是指绝对均匀了,是指随机的概率均匀
4楼2012-06-29 11:41:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
4楼: Originally posted by husthc at 2012-06-29 11:41:08
这里的均匀当然不是指绝对均匀了,是指随机的概率均匀...

那你可以先对x在[-1,1]随机,在对y在[-sqrt(1-x^2),sqrt(1-x^2)]上随机,然后就可以求出z了,这样应该都是均匀随机出来的吧
showmethemoney
5楼2012-06-29 11:47:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

x=2*rand(1,10)-1;
y=(2*rand(1,10)-1).*sqrt(1-x.^2);
z=sqrt(1-x.^2-y.^2);
scatter3(x,y,z)
hold on
sphere
hold on
scatter3(x,y,-z)
不知道行不行
showmethemoney
6楼2012-06-29 11:56:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

蒙原JY

新虫 (初入文坛)

【答案】应助回帖

phi = (1+sqrt(5))/2;
v = [1/phi phi 0;-1/phi phi 0;1/phi -phi 0;-1/phi -phi 0
phi 0 1/phi; -phi 0 1/phi;phi 0 -1/phi;-phi 0 -1/phi
0 1/phi phi;0 -1/phi phi;0 1/phi -phi;0 -1/phi -phi
1 1 1;1 -1 1; 1 1 -1;-1 1 1;-1 -1 1;-1 1 -1;-1 -1 -1;1 -1 -1];
x=v(:,1);
y=v(:,2);
z=v(:,3);
plot3(x,y,z,'*')

以上20个点均匀分布在半径为sqrt(3)的球上,组成了正12面体的20个顶点。
在资料上看到的,我还没有学到这些,所以只能提供一点点,希望有参考价值
7楼2014-11-08 20:46:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 husthc 的主题更新
信息提示
请填处理意见