4

球座標の密度値の配列があります。より具体的には、形状を持つ密度(180,200,200)と呼ばれる配列があります。r_coord、theta_coord、phi_coord という配列もあり、形状 (180,200,200) は密度配列の球面座標です。

Pythonを使用して、この密度をデカルト座標にマッピングしたいと思います。したがって、デカルト座標 x_coord、y_coord、および z_coord で補間される新しいdensity2が必要になります。有望に見える scipy.ndimage.interpolation.map_coordinates を見つけましたが、それを機能させる方法がわかりません。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

2

このようなものが動作するはずです:

import scipy.interpolate
rflat=scipy.array( r_coord.flat )
tflat=scipy.array( theta_coord.flat )
pflat=scipy.array( phi_coord.flat )
coordpoints=scipy.concatenate( [ rflat[:, scipy.newaxis], tflat[:,scipy.newaxis], pflat[:,scipy.newaxis] ] , axis=1 )
rtpinterpolator=scipy.interpolate.linearNDInterpolate( coordppoints, density.flat )    

def xyz2rtp( x,y,z):
     r=scipy.sqrt( x**2+y**2+z**2)
     t=scipy.acos( z/r )
     p=scipy.atan2( y, x )
     return (r,t,p)

# now you can get the interpolated value for any (x,y,z) coordinate you want.
val=rtpinterpolator( xyz2rtp( x,y,z) )

キーポイント:

  • 既存の scipy 多次元補間を使用し、
  • 補間器に渡すときにxyz座標を変換します。rtp
于 2013-02-12T22:37:49.463 に答える