我正在尝试使用scipy interpolate
将样条曲面拟合到某些2D数据from scipy import interpolate
使用
# fit spline to surface
xnew, ynew = np.mgrid[x[0]:x[-1]:100j, y[0]:y[-1]:100j]
tck = interpolate.bisplrep(X, Z, array)
znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck)
但我收到以下警告信息:
C:\用户\应用程序数据\本地\连续\ Anaconda3 \ LIB \站点包\ SciPy的\ interpolate_fitpack_impl.py:975: RuntimeWarning:找到一个理论上不可能的结果 使用fp = s平滑样条曲线。可能的原因:太小或太糟糕 选择eps。 (ABS(FP-S)/s>0.001) kx,ky = 3,3 nx,ny = 16,18 m = 610 fp = 18417275715.663498 s = 575.071502 warnings.warn(RuntimeWarning(_iermess2 [ierm] [0] + _mess)) C:\用户\应用程序数据\本地\连续\ Anaconda3 \ LIB \站点包\ SciPy的\ interpolate_fitpack_impl.py:975: RuntimeWarning:所需的存储空间超出可用空间 储存空间。可能的原因:nxest或nyest太小或s也是 小。 (FP> S) kx,ky = 3,3 nx,ny = 20,20 m = 610 fp = 661.198585 s = 575.071502 warnings.warn(RuntimeWarning(_iermess2 [ierm] [0] + _mess)) C:\用户\应用程序数据\本地\连续\ Anaconda3 \ LIB \站点包\ SciPy的\ interpolate_fitpack_impl.py:975: RuntimeWarning:所需的存储空间超出可用空间 储存空间。可能的原因:nxest或nyest太小或s也是 小。 (FP> S) kx,ky = 3,3 nx,ny = 20,20 m = 610 fp = 1013.605606 s = 575.071502 warnings.warn(RuntimeWarning(_iermess2 [ierm] [0] + _mess))
我承认我不知道警告信息是什么意思,也没有在网上找到任何东西。
答案 0 :(得分:0)
好像你的输入数据包含的数据点太少了?另一个问题可能是您的x
和y
轴具有非常不同的数量级。我不知道这是bisplrep
的问题,但其他插值算法不喜欢这样。
我在scipy.interpolate.Rbf
取得了更多成功,这也给出了非常顺利的结果。