python - 尽管对 theta 和 phi 使用均匀分布,但用于球体生成的点非常密集的区域
问题描述
我正在设置一个数据集,目标是制作一个沿径向具有正态分布的球体,以及均匀的 theta 和 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
我希望程序输出一个“模糊”球体,其沿径向呈正态分布,但在其他地方具有统一的行为(即没有特别密集的区域)。实际行为是在其他地方产生具有一致行为的密集极点。
解决方案
推荐阅读
- c# - 部署后的 .NET Core PartialAsync 异常
- django - 未找到带有参数 '('',)' 的 'post_share' 的反向操作。尝试了 2 种模式:['blog\\/(?P
[0-9]+)\\/share\\/$', '博客\\/post_share\\/$'] - apache-flink - Apache Flink:注册名称冲突。名称为 *** 的 KvState 已被其他运营商注册
- spring - spring模板解析错误
- java - 将回收站视图放在底部导航上方
- sql - SQL Server - SQL 查询以查找具有不同日期的重复记录
- gsm - 如何从调制解调器进行 CSD 呼叫
- database - 我想使用带有以下 SQL 语句的 expdp 导出架构 -> ORA-39001
- python - 将几个numpy数组存储为jpg图像python时丢失文件
- amazon-web-services - 如何将文档上传到签名的 AWS S3?什么是桶和对象?