当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy BSpline.design_matrix用法及代码示例


本文简要介绍 python 语言中 scipy.interpolate.BSpline.design_matrix 的用法。

用法:

classmethod  BSpline.design_matrix(x, t, k, extrapolate=False)#

将设计矩阵作为 CSR 格式的稀疏数组返回。

参数

x 数组, 形状 (n,)

评估样条曲线的点。

t 数组, 形状 (nt,)

已排序的一维结数组。

k int

B-spline 度数。

extrapolate bool 或 ‘periodic’,可选

是否根据第一个和最后一个间隔进行推断或引发错误。如果‘periodic’,则使用周期性外推法。默认值为 False。

返回

design_matrix csr_array对象

CSR 格式的稀疏矩阵,其中每行包含输入行的所有基本元素(第一行 = x[0], … 的基本元素,最后一行 = 基本元素 x[-1])。

注意

在设计矩阵的每一行中,所有基本元素都在特定点进行评估(第一行 - x[0],...,最后一行 - x[-1])。

nt 是节点向量的长度:只要有 nt - k - 1 个基元素,nt 应不小于 2 * k + 2 才能具有至少 k + 1 个基元素。

越界 x 引发 ValueError。

例子

为 B-spline 构建设计矩阵

>>> from scipy.interpolate import make_interp_spline, BSpline
>>> import numpy as np
>>> x = np.linspace(0, np.pi * 2, 4)
>>> y = np.sin(x)
>>> k = 3
>>> bspl = make_interp_spline(x, y, k=k)
>>> design_matrix = bspl.design_matrix(x, bspl.t, k)
>>> design_matrix.toarray()
[[1.        , 0.        , 0.        , 0.        ],
[0.2962963 , 0.44444444, 0.22222222, 0.03703704],
[0.03703704, 0.22222222, 0.44444444, 0.2962963 ],
[0.        , 0.        , 0.        , 1.        ]]

为某个节点向量构造一个设计矩阵

>>> k = 2
>>> t = [-1, 0, 1, 2, 3, 4, 5, 6]
>>> x = [1, 2, 3, 4]
>>> design_matrix = BSpline.design_matrix(x, t, k).toarray()
>>> design_matrix
[[0.5, 0.5, 0. , 0. , 0. ],
[0. , 0.5, 0.5, 0. , 0. ],
[0. , 0. , 0.5, 0.5, 0. ],
[0. , 0. , 0. , 0.5, 0.5]]

这个结果等同于在稀疏格式中创建的结果

>>> c = np.eye(len(t) - k - 1)
>>> design_matrix_gh = BSpline(t, c, k)(x)
>>> np.allclose(design_matrix, design_matrix_gh, atol=1e-14)
True

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.interpolate.BSpline.design_matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。