亲爱的StackOverFlow用户,
我的问题如下。
我在3D空间中有一组点(大约1.e4)。对于这些点,我知道它们的球面坐标(r,theta,phi)和每个点(rho)的相应密度值。然而,这些点没有映射到任何网格,它们在空间中只是没有组织。 我想要做的是将每个点的密度值插入到我选择的均匀球形网格中。
为此,我尝试使用scipy.interpolate SmoothSphereBivariateSpline方法。但是,我相信这种方法只能在固定半径上绘制球面坐标(虽然我不完全确定)。
所以我的第一个问题是,是否有一个python插值方法可以用于我的目的。
其次,如果SmoothSphereBivariateSpline适用于我的目的,我想问一下是否有人可以建议使用它的方法。 我现在正在尝试以下方法:
#spherical mesh data
theta_mesh_num = 3
phi_mesh_num = 3
radius_mesh_num = 100
#read data from my data file
radius = rows_0[:,0]
theta = rows_0[:,2]
phi = rows_0[:,1]
density = rows_0[:,5] + 1.e-18
#interpolator object on the unorganised data
interpolator_density = SmoothSphereBivariateSpline(theta, phi, radius, w=density, s=len(density))
#setup spherical grid (uniform for the moment)
array_theta = np.linspace(0., np.pi, theta_mesh_num)
array_phi = np.linspace(0., 2*np.pi, phi_mesh_num)
array_radius = np.linspace(np.min(radius), np.max(radius), radius_mesh_num)
grid_theta, grid_phi, grid_radius = np.meshgrid(array_theta, array_phi, array_radius)
#interpolate data on the grid
data_inerp = interpolator_density(array_theta,array_phi,array_radius)
使用此代码我会收到以下错误:
ValueError异常: 没有更多的结可以添加,因为额外的结将(准) 与旧的一致:太小或太大的重量 不准确的数据点。 加权最小二乘样条对应于当前的集合 节。
正如我所说,我不确定这是否正确。有人能指出我正确的方向吗?
提前致谢。