当我执行以下代码时:
数组
我认为插值值的变化是由于插值点到给定数据点的不同距离引起的。
我的问题是:有没有办法避免这种行为?如何获得一种不受插值点与数据点距离加权影响的插值方法,并在
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import Rbf
x_coarse, y_coarse = np.mgrid[0:5, 0:5]
x_fine, y_fine = np.mgrid[1:4:0.23,1:4:0.23]
data_coarse = np.ones([5,5])
rbfi = Rbf(x_coarse.ravel(), y_coarse.ravel(), data_coarse.ravel())
interpolated_data = rbfi(x_fine.ravel(), y_fine.ravel()).reshape([x_fine.shape[0],
y_fine.shape[0]])
plt.imshow(interpolated_data)
数组
interpolated_data
的值范围从0.988到1.002,相应的图形如下所示:
然而,在这种简单的插值情况下,我希望插值值更接近正确的值,即1.000。我认为插值值的变化是由于插值点到给定数据点的不同距离引起的。
我的问题是:有没有办法避免这种行为?如何获得一种不受插值点与数据点距离加权影响的插值方法,并在
interpolated_data
中得到1.000的值?