是否有一种方法可以在没有已知系数的情况下生成B型样条函数



我正在尝试通过定义b-splines的顺序,基础功能的数量,结和评估范围来生成基链曲线功能。请将我推荐给Python中的合适功能,可以帮助我。

我当前的实现是使用JohnTfoster/BSPLINE方法。它不允许我定义基函数的数量,结果与MATLAB的函数不相似。https://github.com/johntfoster/bspline

scipy.interpaly.bspline.basis_element函数不允许我定义样条顺序,基本功能的数量,结

MATLAB实现:

nbreaks = 20;
nbasis = nbreaks + norder - 2;
breaks = linspace(0,taufmax,nbreaks)';
%Create a smooth function that passes through the break point / knots
wtaubasis = create_bspline_basis([0,max(breaks)], nbasis, norder, breaks);
% Create a matrix of basis functions at each break points for the entire Tau
basisValueMat_f = full(eval_basis(wtaubasis, tauf));

Python实施(Johntfoster/bspline方法(

import numpy as np
import bspline
import bspline.splinelab as splinelab
norder = 4
nbreaks = 20
#This defines the number of basis function
nbasis = nbreaks + norder - 2
#For the spline, it has to pass thorough the corresponding break points
breaks = np.linspace(0,tauf_max,nbreaks)
k = splinelab.augknt(breaks, norder)
# create spline basis of order p on knots k  
B = bspline.Bspline(k, norder)  
A0 = B.collmat(np.squeeze(tau_f), deriv_order=0)

我想在指定点评估B样条基函数。类似于MATLAB的结果将是令人鼓舞的。

evaluate_all_bspl,https://github.com/scipy/scipy/blob/v1.3.0/scipy/interpaly/_bspl.pl.pyx#l163它在给定的评估点上计算给定打结的所有非零B-SPLINE。不过,这不是公共功能,因此,如果您最终使用它,您就可以自己。

scipy.tellate的功能make_interp_spline,该功能适合并返回BSPLINE到由两个向量xy表示的2D数据集。此函数具有用于控制样条和结度的参数kt

相关内容

  • 没有找到相关文章

最新更新