- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 this question 中,我向社区询问了 scipy.interpolate.splev
如何计算样条曲线基础。我的目标是通过预计算比 splev
更快地计算样条曲线bspline 基础
,并通过对控制点
点积执行基础
来生成曲线。
此后,a new scipy.interpolate.BSpline
interpolator 被添加到 scipy
中。 It comes with a basis_element
function ,我认为它可以用于返回用于计算样条线的基础。
例如,使用代码 from here 和以下输入:
import numpy as np
# Control points
cv = np.array([[ 50., 25., 0.],
[ 59., 12., 0.],
[ 50., 10., 0.],
[ 57., 2., 0.],
[ 40., 4., 0.],
[ 40., 14., 0.]])
kv = [0, 0, 0, 0, 1, 2, 3, 3, 3, 3] # knot vector
n = 10 # 10 samples (keeping it simple)
degree = 3 # Curve degree
我可以计算以下 bspline 基础:
[[ 1. 0. 0. 0. 0. 0. ]
[ 0.2962963 0.56481481 0.13271605 0.00617284 0. 0. ]
[ 0.03703704 0.51851852 0.39506173 0.04938272 0. 0. ]
[ 0. 0.25 0.58333333 0.16666667 0. 0. ]
[ 0. 0.07407407 0.54938272 0.36728395 0.00925926 0. ]
[ 0. 0.00925926 0.36728395 0.54938272 0.07407407 0. ]
[ 0. 0. 0.16666667 0.58333333 0.25 0. ]
[ 0. 0. 0.04938272 0.39506173 0.51851852 0.03703704]
[ 0. 0. 0.00617284 0.13271605 0.56481481 0.2962963 ]
[ 0. 0. 0. 0. 0. 1. ]]
使用np.dot
与基础
和控制点
返回曲线上的10个样本:
[[ 50. 25. 0. ]
[ 55.12654321 15.52469136 0. ]
[ 55.01234568 11.19753086 0. ]
[ 53.41666667 9.16666667 0. ]
[ 53.14506173 7.15432099 0. ]
[ 53.1882716 5.17901235 0. ]
[ 51.58333333 3.83333333 0. ]
[ 47.20987654 3.87654321 0. ]
[ 42.31790123 6.7345679 0. ]
[ 40. 14. 0. ]]
问题:是否可以从 scipy.interpolate.BSpline
中提取上述基础?
显然我一定是用错了,因为当我尝试时我得到这样的东西:
from scipy.interpolate import BSpline
b = BSpline.basis_element(kv)
print b(np.linspace(kv[0],kv[-1],n)) # i'm not sure what these values represent
[ 0. 0.00256299 0.04495618 0.16555213 0.28691315 0.28691315
0.16555213 0.04495618 0.00256299 0. ]
最佳答案
BSpline.basis_element
将内部结作为其参数。
在您的示例中,您填充了结,但这并没有达到您的预期:
In [3]: t = [0, 0, 0, 0, 1, 2, 3, 3, 3, 3]
In [4]: b = BSpline.basis_element(t)
In [5]: b.k
Out[5]: 8
所以这是一个八阶样条线。
如果你想要二次样条,你会这样做
In [7]: b1 = BSpline.basis_element([0, 1, 2, 3])
In [8]: b1.k
Out[8]: 2
In [9]: b1.t
Out[9]: array([-1., -1., 0., 1., 2., 3., 4., 4.])
感到困惑吗?方法很简单:https://github.com/scipy/scipy/blob/v0.19.1/scipy/interpolate/_bsplines.py#L243-L302
BSpline.basis_element
返回的可调用函数实际上是一个 b 样条函数。 使用数组参数调用它的结果相当于直接运行示例代码在数组每个元素的循环中的 BSpline 文档字符串中,https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.BSpline.html
编辑:如果您正在使用 Cox-de Boor 算法的变体来计算给定点的所有非零样条线,那么您可以查看 _bspl.evaluate_all_bsplines
函数,https://github.com/scipy/scipy/blob/v0.19.1/scipy/interpolate/_bspl.pyx#L161(它本身只是 C 例程的包装,它完成了所有繁重的工作;请注意,在性能方面很难击败后一个例程。)
但是,它不是公共(public)函数,因此不保证在未来版本中可用。如果您对它有很好的用途,并且对面向用户的 API 有建议,请将讨论转移到 scipy bug 跟踪器。
关于python - 如何从 scipy.interpolate.BSpline 中提取 BSpline 基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927965/
我正在尝试使用 AngularJS 将 YouTube 视频插入到我的网站中,但我一直收到相同的错误: Error: $interpolate:interr Interpolation Error 为
我正在尝试将动态链接从 json 加载到我的 iframe 模板中。当我加载 iframe 页面时,会弹出此错误。我真的不知道为什么。这是我第一次看到这个错误。下面是代码。 Controller ap
我想从 x 进行插值到 z .但有一个警告: 取决于状态y , 我有一个不同的 xGrid - 我需要对其进行插值。 我有一个 y 的网格, yGrid .说 yGrid=[0,1] .和 xGrid
我是 javascript 的新手,但几周前刚刚钻研 d3.js 尝试创建时空可视化。 我想要实现的是基于以下代码的类似 ( https://jsfiddle.net/dmatekenya/mz5fx
scipy.interpolate.splrep(x, y, w=None, xb=None, xe=None, k=3, task=0, s=None, t=None, full_output=0,
Scipy 函数 griddata和 Rbf两者都可以用于对随机分散的 n 维数据进行插值。它们之间有什么区别?其中之一在准确性或性能方面更胜一筹吗? IMO,这不是 this question 的重
我需要(以数字方式)计算函数的一阶和二阶导数,为此我尝试同时使用 splrep 和 UnivariateSpline 来创建样条曲线插值函数的导数。 但是,对于幅度为 10^-1 或更低的函数,样条表
好的,所以我最近一直在研究插值。遗憾的是,我读过的几乎每篇文章都只讨论精确到 0.0 到 1.0 的小数级别的插值。我想插入整数整数,不管它们有多大,或者是否有负数或其他什么。我用线性插值完成了这个:
如何在 FORTRAN 中实现二维插值,其中数据如下所示。 x 和 y 是两个坐标,z 是依赖于它们的值 x 间隔均匀但 y 不均匀间隔且 y 的最大值 对应于 x 的统一值不断增加。 在不损失太多准
在彼得阿尔弗雷德的 article关于多元散点数据插值,他提到,从各种方案中,只有少数方案真正受到从业者的欢迎。例如,他命名为 Shepard 方法和 Hardy Multiquadrics。但那篇文
我不清楚图像处理中重采样和插值之间的区别。如果我有一个 geotiff 并且我想提高它的分辨率,我应该使用重采样方法,例如最近邻,对吗?例如,我发现 gdalwarp 函数可以做到这一点。 插值方法,
对于这个有点令人困惑的标题,我感到很抱歉,但我不确定如何更清楚地总结这一点。 我有两组 X,Y 数据,每组对应一个总体值。它们是从原始数据中相当密集地采样的。我正在寻找一种方法,为任何给定的 Y 找到
我很抱歉标题有点困惑,但我不确定如何更清楚地总结这一点。 我有两组X,Y数据,每组对应一个大概的整体值。它们是从原始数据中相当密集地采样的。我正在寻找的是一种方法,可以为我已有的集合之间的值找到任何给
我是 D3 新手,正在尝试一些图表。在使用 D3 V4 构建折线图时,我遇到了以下错误。 d3.line(...).x(...).y(...).interpolate is not a functio
问候, 在我正在开发的网络应用程序中,我想做如下事情: 我有一个 bean class Gene{ String geneid; String sequence; .. } // EL express
有什么方法可以将 Angular 的 $interpolate 与数组而不是对象一起使用? 示例代码: var exp = $interpolate('Hello {{name}}!'); var r
我是编程新手,我会尝试编写一个线性插值函数: from bisect import bisect_left def interpolate((x_list, y_list), x_test):
我启动了一个带有共享元素的场景转换的 Activity,它工作正常。 ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTr
背景分析 在传统的html页面中我们可以定义变量吗?当然不可以,那我们假如希望通过变量的方式实现页面内容的数据操作也是不可以的。当然我们可以在服务端通过定义html标签库方式,然后以html作为模
我在 wikipedia 上阅读了关于双三次插值的信息.我遇到了变量 t这是没有定义的。 等式是: 谁能告诉我这个变量是什么意思以及它的常用值是什么? 最佳答案 t 是 0 到 1 之间的任何数字。
我是一名优秀的程序员,十分优秀!