scipy.interpolate.BSpline.design_matrix¶
- classmethod BSpline.design_matrix(x, t, k)[源代码]¶
返回CSR格式的设计矩阵。
- 参数
- x类似数组,形状(n,)
要计算样条线的点。
- tARRAY_LIKE,Shape(nt,)
已排序的一维节点数组。
- k集成
B样条次数。
- 退货
- design_matrix : csr_matrix 对象CSR_矩阵对象
CSR格式的稀疏矩阵,其中每行中的所有基本元素都在特定点(第一行-x)求值 [0] ,.,最后一排-x [-1] )。
注意事项
1.8.0 新版功能.
在设计矩阵的每一行中,所有基本元素都在特定点(第一行-x)求值 [0] ,.,最后一排-x [-1] )。
nt 是节点矢量的长度:只要有 nt - k - 1 基本元素, nt 应不低于 2 * k + 2 至少要有 k + 1 基本元素。
请勿进入 x 引发ValueError。
示例
构造B样条的设计矩阵
>>> from scipy.interpolate import make_interp_spline, BSpline >>> 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