python - 有没有办法在 Python 中生成 B 样条函数而不知道系数?

标签 python scipy bspline

我试图通过定义 b 样条的顺序、基函数的数量、结和评估范围来生成基样条函数。请向我推荐一个可以帮助我的 Python 中合适的函数。

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

scipy.interpolate.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_bsplhttps://github.com/scipy/scipy/blob/v1.3.0/scipy/interpolate/_bspl.pyx#L163 它计算给定评估点处给定节点的所有非零 B 样条曲线。但它不是一个公共(public)函数,因此如果您最终使用它,就得靠您自己了。

关于python - 有没有办法在 Python 中生成 B 样条函数而不知道系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56177231/

相关文章:

r - 使用受约束的 B 样条近似形状轮廓

python - 带有权重的 OpenGL B 样条曲线渲染不正确

python - 如何编辑 django-machina 论坛模板和样式

Python - os.system 在输出末尾放置不需要的(和不必要的)换行符和 0

python - Python中数据点的平均趋势曲线

python - 使用scipy在xy平面定义一个蒙特卡洛采样椭圆

python - 在python中添加两个不同形状的 `csc`稀疏矩阵

python - 在python中删除文件的一部分

python - 为什么pickle __getstate__ 接受它首先需要__getstate__ 进行pickle 的实例作为返回值?