scipy.interpolate.

CloughTocher2DInterpolator#

class scipy.interpolate.CloughTocher2DInterpolator(points, values, fill_value=nan, tol=1e-06, maxiter=400, rescale=False)#

CloughTocher2DInterpolator(points, values, tol=1e-6)。

2D 中的分段立方、C1 平滑、曲率最小化插值器。

在版本 0.9 中新增。

參數:
points浮點數的 ndarray,形狀為 (npoints, ndims);或 Delaunay

資料點座標的 2-D 陣列,或預先計算的 Delaunay 三角剖分。

values浮點數或複數的 ndarray,形狀為 (npoints, …)

points 的 N-D 資料值陣列。values 沿著第一個軸的長度必須等於 points 的長度。與某些插值器不同,插值軸無法變更。

fill_value浮點數,選用

用於填補要求的點位於輸入點的凸包外部的值。如果未提供,則預設值為 nan

tol浮點數,選用

梯度估算的絕對/相對容忍度。

maxiter整數,選用

梯度估算中的最大迭代次數。

rescale布林值,選用

在執行插值之前,將點重新縮放至單位立方體。如果某些輸入維度具有不可比較的單位且相差多個數量級,則這非常有用。

另請參閱

griddata

插值非結構化 D-D 資料。

LinearNDInterpolator

N > 1 維度中的分段線性插值器。

NearestNDInterpolator

N > 1 維度中的最近鄰插值器。

interpn

在規則網格或直線網格上進行插值。

RegularGridInterpolator

在任意維度中的規則或直線網格上的插值器 (interpn 包裝了此類別)。

註解

插值器是透過使用 Qhull [1] 三角剖分輸入資料,並在每個三角形上建構分段立方插值 Bezier 多項式,使用 Clough-Tocher 方案 [CT] 來建構的。保證插值器是連續可微分的。

選擇插值器的梯度,以便近似最小化插值表面的曲率。估算此梯度時,會使用 [Nielson83][Renka84] 中描述的全域演算法。

注意

對於規則網格上的資料,請改用 interpn

參考文獻

[CT]

例如,請參閱 P. Alfeld, ‘’用於四面體資料的三變數 Clough-Tocher 方案’’. Computer Aided Geometric Design, 1, 169 (1984); G. Farin, ‘’三角形 Bernstein-Bezier 貼片’’. Computer Aided Geometric Design, 3, 83 (1986)。

[Nielson83]

G. Nielson, ‘’一種基於最小範數網路的散佈資料插值方法’’. Math. Comp., 40, 253 (1983)。

[Renka84]

R. J. Renka 和 A. K. Cline. ‘’一種基於三角形的 C1 插值方法.’’, Rocky Mountain J. Math., 14, 223 (1984)。

範例

我們可以在 2D 平面上插值

>>> from scipy.interpolate import CloughTocher2DInterpolator
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()
>>> x = rng.random(10) - 0.5
>>> y = rng.random(10) - 0.5
>>> z = np.hypot(x, y)
>>> X = np.linspace(min(x), max(x))
>>> Y = np.linspace(min(y), max(y))
>>> X, Y = np.meshgrid(X, Y)  # 2D grid for interpolation
>>> interp = CloughTocher2DInterpolator(list(zip(x, y)), z)
>>> Z = interp(X, Y)
>>> plt.pcolormesh(X, Y, Z, shading='auto')
>>> plt.plot(x, y, "ok", label="input point")
>>> plt.legend()
>>> plt.colorbar()
>>> plt.axis("equal")
>>> plt.show()
../../_images/scipy-interpolate-CloughTocher2DInterpolator-1.png

方法

__call__(xi)

在給定點評估插值器。