如何使用MATLAB

问题描述:

我试图通过使用在原产地中心下面的命令来产生内球随机点通过使用下面的代码如何使用MATLAB

no_of_spots = 3000 
radius=20 
rvals = (2)*rand(no_of_spots,1)-(1); 
elevation = asin(rvals); 
azimuth = 2*pi*rand(no_of_spots,1); 
radii = rand(no_of_spots,1)*radius; 
[point_x,point_y,point_z] = sph2cart(azimuth,elevation,radii); 

我得到的结果sphere with random points

从图生成内球随机点它是随机点集中在原点附近,即看起来像高斯分布。我需要在球体内均匀分布的随机点,或者需要将点的集中从中心转移到另一个点。我怎样才能做到这一点/谁能帮助提前/ 感谢, 马努

+0

[在球形体积内采样均匀分布的随机点]可能的重复(https://*.com/questions/5408276/sampling-uniformly-distributed-random-points-inside-a-spherical-volume) – buzjwa

如果你调整你的radii专线:

radii = rand(no_of_spots,1)*radius; 

要:

radii = (rand(no_of_spots,1).^(1/3))*radius; 

你应该得到更多的统一的分布。

这是Knuth在中描述的计算机编程艺术。卷。 2,并且标记为here

+1

谢谢你的回复 – manoos