本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。