本文簡要介紹 python 語言中 scipy.interpolate.PPoly.from_spline
的用法。
用法:
classmethod PPoly.from_spline(tck, extrapolate=None)#
從樣條構造分段多項式
- tck:
樣條曲線,由
splrep
或 BSpline 對象返回。- extrapolate: bool 或 ‘periodic’,可選
如果是布爾值,則確定是根據第一個和最後一個間隔外推到越界點,還是返回 NaN。如果‘periodic’,使用周期性外推。默認為真。
參數 ::
例子:
構造插值樣條並將其轉換為
PPoly
實例>>> import numpy as np >>> from scipy.interpolate import splrep, PPoly >>> x = np.linspace(0, 1, 11) >>> y = np.sin(2*np.pi*x) >>> tck = splrep(x, y, s=0) >>> p = PPoly.from_spline(tck) >>> isinstance(p, PPoly) True
請注意,此函數僅支持開箱即用的一維樣條線。
如果
tck
對象表示參數樣條線(例如由splprep
或BSpline
和c.ndim > 1
構造),則需要手動循環尺寸。>>> from scipy.interpolate import splprep, splev >>> t = np.linspace(0, 1, 11) >>> x = np.sin(2*np.pi*t) >>> y = np.cos(2*np.pi*t) >>> (t, c, k), u = splprep([x, y], s=0)
請注意,
c
是兩個長度為 11 的數組的列表。>>> unew = np.arange(0, 1.01, 0.01) >>> out = splev(unew, (t, c, k))
為了將此樣條轉換為冪基,我們將 b-spline 係數列表的每個分量
c
轉換為相應的三次多項式。>>> polys = [PPoly.from_spline((t, cj, k)) for cj in c] >>> polys[0].c.shape (4, 14)
請注意多項式的係數多聚體都在冪基中,它們的維數正好反映了這一點:這裏 4 是階(度+1),14 是間隔數——這隻不過是原始結數組的長度tck減一。
或者,我們可以沿著第三個維度將組件堆疊到單個
PPoly
中:>>> cc = np.dstack([p.c for p in polys]) # has shape = (4, 14, 2) >>> poly = PPoly(cc, polys[0].x) >>> np.allclose(poly(unew).T, # note the transpose to match `splev` ... out, atol=1e-15) True
相關用法
- Python SciPy PPoly.solve用法及代碼示例
- Python SciPy PchipInterpolator.solve用法及代碼示例
- Python SciPy interpolate.make_interp_spline用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy ClusterNode.pre_order用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy FortranFile.read_record用法及代碼示例
- Python SciPy ndimage.correlate用法及代碼示例
- Python SciPy special.exp1用法及代碼示例
- Python SciPy special.expn用法及代碼示例
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy interpolate.krogh_interpolate用法及代碼示例
- Python SciPy ndimage.morphological_gradient用法及代碼示例
- Python SciPy distance.sokalmichener用法及代碼示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- Python SciPy linalg.cdf2rdf用法及代碼示例
- Python SciPy csc_array.diagonal用法及代碼示例
- Python SciPy fft.idctn用法及代碼示例
- Python SciPy linalg.LaplacianNd用法及代碼示例
- Python SciPy linalg.solve_circulant用法及代碼示例
- Python SciPy hierarchy.ward用法及代碼示例
- Python SciPy signal.chirp用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy ndimage.variance用法及代碼示例
- Python SciPy signal.residue用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.PPoly.from_spline。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。