2017-07-31 86 views
0

我想知道是否有在3D空间中插值的函数。举例来说,我有一个有x,y,z坐标的矩阵。有没有一种方法可以插值并计算给定x和y的z坐标。例如:使用numpy在3D空间中插值

A=[1,3,5, 
    2,3,4 
    4,4,8 
    3,4,5] 

,我需要计算的z坐标,当x = 3 Y = 3,5-

+1

'scipy.interpolate.interp2d'? –

回答

2

是,scipy.interpolate提供了暴露__call(x)__函数来对预先计算的网格内插函数以及对象按需

计算值请看下面的例子

import numpy as np 
from scipy import interpolate 

A=[1,3,5, 
    2,3,4, 
    4,4,8, 
    3,4,5] 
xs = A[0::3] 
ys = A[1::3] 
zs = A[2::3] 

points=np.zeros((len(xs),2)) 
values=np.zeros((len(xs))) 
points[:,0] = xs 
points[:,1] = ys 
values[:] = zs 

interpolator = interpolate.CloughTocher2DInterpolator(points,values) 
z = interpolator(3,3.5) 
print(z) 

这段代码应该输出VAL ue

5.489419430226453 

它首先将n * 3个值的输入列表转换为三个numpy数组xs,ys和zs。然后使用前一阶段创建的pointsvalues阵列创建插补器对象。