我正在建立一个数据集,目标是制作一个球体,该球体在径向方向上具有正态分布,并且θ和phi分布均匀。尽管对theta和phi使用了均匀的分布,但我仍然得到极小点(在z轴上+/-半径附近对称)的非常密集点的区域,这些区域的大小很小但很明显。我也在写文件,并使用ROOT绘制结果。
我尝试缩小theta和phi的范围以绘制半球的图形,但是在两种情况下问题仍然存在。我还将半径设置为常数,以确保不干扰极点的形成。两极仍然形成。
#Size is the number of points to generate, and n is the dimension of the problem (n=2 for circle, n=3 for sphere, etc.)
hs_points = np.zeros((size, n))
for i in range(size):
hs_point = hs_points[i]
for j in range(n):
if j == 0:
# normal distribution on radius
coord = np.random.normal(mu, sigma)
elif j < n-1:
coord=round(random.uniform(0,np.pi),15)
else:
coord = np.random.rand()*(2*np.pi)
hs_point[j] = coord
hs_points[i] = hs_point
return hs_points
c_points = np.zeros((size, n))
# translate each hyperspherical point into a cartesian point
for i in range(size):
hs_point = hs_points[i]
xCoord=hs_point[0]*np.sin(hs_point[1])*np.cos(hs_point[2])
yCoord=hs_point[0]*np.sin(hs_point[1])*np.sin(hs_point[2])
zCoord=hs_point[0]*np.cos(hs_point[1])
c_points[i,0]=xCoord
c_points[i,1]=yCoord
c_points[i,2]=zCoord
我希望程序输出一个“模糊”球体,该球体在径向方向上具有正态分布,但在其他所有位置(即没有特别密集的区域)具有均匀的行为。实际行为是密集的极点的产生,其他地方的行为均一。