两个变量在三维网格上的插值



我需要将在3D网格中写入的两个变量插入到另一个3D网格中。我尝试了逆距离方法,但我只得到两个值,它们不代表原始网格上的分布,分配给新网格的每个点。下面是我的代码示例:

text=text[pstart:pend]
x=[]
y=[]
z=[]
for line in text:
coords=line.split()
x.append(float(coords[2])) #coordinates of the new grid
y.append(float(coords[1]))
z.append(float(coords[0]))
Xg=np.asarray([x,y,z])

# Gather mean flow data
xd=[]
yd=[]
zd=[]
cd=[]
rhod=[]
with open(meanflowdata,'rb') as csvfile:
spamreader=csv.reader(csvfile, delimiter=',')
for row in spamreader:
if len(row)>2:
xd.append(float(row[0])) #coordinates and values of the source file
yd.append(float(row[1]))
zd.append(float(row[2]))
cd.append(float(row[3]))
rhod.append(float(row[4]))
Xd=np.asarray([xd,yd,zd])
Zd=np.asarray([cd,rhod])

leafsize = 20
print "# setting up KDtree"
invdisttree = Invdisttree( Xd.T, Zd.T, leafsize=leafsize, stat=1 )
print "# Performing interpolation"
interpol = invdisttree( Xg.T )
c=interpol.T[0]
rho=interpol.T[1]

据我所知,问题出在调用invdisttree函数时,该函数不能正常工作。有人有一个想法或替代方法来建议插值吗?

interpol.T[0], interpol.T[1]来自哪里?你的Invdisttree是从哪里来的?这on SO has

invdisttree = Invdisttree( X, z )  -- data points, values
interpol = invdisttree( q, nnear=3, eps=0, p=1, weights=None, stat=0 )

在你的例子中,X可以是100 x 3,z可以是100 x 2,查询点q10 × 3 ×刑警10 × 2。(invdisttree是一个函数,你调用它来做插值:
interpol = invdisttree( q ...)。)