24小时热门版块排行榜    

查看: 3916  |  回复: 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的回帖

蒙原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 的主题更新
信息提示
请填处理意见