Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? RAG (Retrieval-Augmented Generation)
et Fine Tuning d'un LLM
Voir le programme détaillé
Classe « BSpline »

Méthode scipy.interpolate.BSpline.design_matrix

Signature de la méthode design_matrix

def design_matrix(x, t, k, extrapolate=False) 

Description

help(BSpline.design_matrix)

Returns a design matrix as a CSR format sparse array.

Parameters
----------
x : array_like, shape (n,)
    Points to evaluate the spline at.
t : array_like, shape (nt,)
    Sorted 1D array of knots.
k : int
    B-spline degree.
extrapolate : bool or 'periodic', optional
    Whether to extrapolate based on the first and last intervals
    or raise an error. If 'periodic', periodic extrapolation is used.
    Default is False.

    .. versionadded:: 1.10.0

Returns
-------
design_matrix : `csr_array` object
    Sparse matrix in CSR format where each row contains all the basis
    elements of the input row (first row = basis elements of x[0],
    ..., last row = basis elements x[-1]).

Examples
--------
Construct a design matrix for a 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.        ]]

Construct a design matrix for some vector of knots

>>> 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]]

This result is equivalent to the one created in the sparse format

>>> 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

Notes
-----
.. versionadded:: 1.8.0

In each row of the design matrix all the basis elements are evaluated
at the certain point (first row - x[0], ..., last row - x[-1]).

`nt` is a length of the vector of knots: as far as there are
`nt - k - 1` basis elements, `nt` should be not less than `2 * k + 2`
to have at least `k + 1` basis element.

Out of bounds `x` raises a ValueError.


Vous êtes un professionnel et vous avez besoin d'une formation ? Mise en oeuvre d'IHM
avec Qt et PySide6
Voir le programme détaillé