Scipy插值给出无界值



我有一个数据集data[xi,yi,zi]我想绘制(带有插值值)。借助Scipy.Interpaly,一切看起来几乎都是完美的,但是插值生成了超出输入数据范围的一些值。例如,假设zi0 < zi < 1绑定,RBF插值似乎正在从边界中返回插值值(例如>1);在这里,我简化的尝试:

N=100
data=[xi yi zi]
xis = np.linspace(xi.min(), xi.max(), N)
yis = np.linspace(yi.min(), yi.max(), N)
XI, YI =  np.meshgrid(xis,yis)
rbf = scipy.interpolate.Rbf(xi, yi, zi, function='linear')
ZI=rbf(XI,YI)
print ZI.max()
->1.01357328514

是否有一种方法可以将极限传递给RBF,并让它知道不要经过zi.max()和zi.min()?

radial基函数的插值可能导致值高于最大和低于给定数据值的最小值。(插图)。这是该方法的数学功能,一个人无法传递将其禁用的选项。两个可能的解决方案:

  • 在绘制数据时,请使用np.clip在数据的最低最大值之间夹住插值。
  • 使用分段线性插值(scipy.interpolate.LinearNDInterpolator),可以保证尊重数据值的最小值和最大值。

最新更新