我想对给定的3D点云进行插值:
我看了scipy.interpolate.griddata,结果正是我所需要的,但是据我了解,我需要输入“griddata”,这意味着类似于x = [[0,0,0],[1,1,1],[2,2,2]]
。
但是我给定的3D点云没有这种网格外观-x,y值的行为不像网格-无论如何,每个x,y值只有一个z值。*
那么,对于不在网格点云中的scipy.interpolate.griddata,还有其他替代方法吗?
*编辑:
“无网格外观”表示我的输入看起来像这样:
x = [0,4,17]
y = [-7,25,116]
z = [50,112,47]
最佳答案
这是我用于此类工作的函数:
from numpy import linspace, meshgrid
def grid(x, y, z, resX=100, resY=100):
"Convert 3 column data to matplotlib grid"
xi = linspace(min(x), max(x), resX)
yi = linspace(min(y), max(y), resY)
Z = griddata(x, y, z, xi, yi)
X, Y = meshgrid(xi, yi)
return X, Y, Z
然后像这样使用它:
X, Y, Z = grid(x, y, z)