问题标签 [cubic-spline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
71 浏览

cubic-spline - 使用点创建参数方程

我有点x, y, 和t, 其中t=1,...,Length[x]。我希望使用 的思想制作两个参数方程interpolation,但不使用 Mathematica 中的方法。有什么建议吗?

0 投票
1 回答
1752 浏览

numpy - 使用 scipy.splprep 时如何指定结点的数量

我有以下一段代码。它生成以参数形式给出的给定 3-D 函数的 3-D 三次样条。我使用splprepsplev的在线文档非常适合我的情况。

但是我有一些我不明白的地方。这是代码:

关于这个实现,我有几个问题。

  1. 在这种情况下,元组究竟(t,c,k)返回了什么?我阅读了文档,它说它返回了节点、系数和样条曲线的度数。结点不是必须是 (x, y, z) 形式的坐标吗?所以我们必须有"number of knots"这样的坐标点。但这不是返回的。我们只是返回一个数组length 11

  2. 返回什么u?(文档说它返回参数的值。这是什么意思?参数的值t

  3. 当我使用nest = -1(这是默认值)时,它使用所需的最大结点数(在这种情况下,它们使用11结点)。但是我如何指定我自己的结点数,比如 50 或 80 等?

我完全误解了这里的文档。有人可以启发我使用示例吗?

0 投票
0 回答
275 浏览

c# - 样条系数与控制点的关系

为了解决我正在研究的拟合问题,我想通过一组采样点绘制三次样条曲线。作为这个特定问题的最终结果,我想找到这样做的控制点。

例如:给定红点,我想找到绘制黑色样条线所需的控制点。

曲线通过点

现在数学不是我的强项,但我发现我需要某种样条插值来实现这一点。在关于样条插值的 wiki 文章(https://en.wikipedia.org/wiki/Spline_interpolation)之后,我找到了样条系数 a 和 b(对于数据的 x 和 y 部分)。

现在我真正的问题是如何将这些系数与我可以用来重现黑线的控制点联系起来?任何帮助表示赞赏!

0 投票
0 回答
1077 浏览

matlab - 关于 Matlab 中的钳位三次样条代码

我做了这个程序,但由于某种原因它标记了一个错误(c = tridiagonal ( hi(1:n-1), dd, hi(1:n-1), ri );),我不知道为什么,我确定它是正确的,所以请有人帮忙。这是代码:

三对角码(错误为:w = a(i) - b(i)*v(i-1); )

0 投票
0 回答
101 浏览

matlab - 没有足够的输入参数 Matlab

这是钳位三次样条代码,但在第一行 ( n = length(X);) 标记错误,MATLAB 说没有足够的输入参数,老实说我不知道​​为什么。请有人帮助我。

这里是截图

0 投票
1 回答
82 浏览

matplotlib - 三次样条插值中途退出

我正在尝试进行三次样条插值,由于某种原因,插值在中间下降。这很神秘,我在网上找不到任何类似事件的提及。

这是为了我的论文,所以我已经排除了一些标签等以故意保持它的模糊性,但所有相关代码如下。对于上下文,这是一个与天文学相关的情节。

我从中得到的情节是这样的,插值中有明显的差距:

图像

如果您想知道,这些是 sum_all 和 sum_can 数组中的值(我认为这无关紧要,但以防万一您希望自己绘制数字):

差距发生在 [0.606,1.26194810e+28] 和 [0.814,3.30328780e+28] 之间。如果我将间隔从 0.001 更改为更高的值,很明显该图实际上并没有中断,而只是在 y 轴上下降到 0 以下(但图是连续的)。那么它为什么这样做呢?这肯定不是正确的插值吗?仅用我们的眼睛看,这显然不是这两点之间的良好插值连接。

任何提示或意见将不胜感激。非常感谢您!

0 投票
1 回答
1401 浏览

scipy - 不同的python函数来拟合三次样条,找到系数

我想将 Python 中的三次样条拟合到嘈杂的 x、y 数据并提取每个间隔的样条系数(即我希望为每个间隔获得四个样条系数)

到目前为止,我已经尝试过(全部来自 scipy.interpolate):

1)CubicSpline,但是这种方法不允许我平滑样条,导致不切实际的、跳跃的系数数据。

2) 结合 splrep 和 splev,例如

我在哪里提取系数/结使用

但是,即使我将平滑参数 s 提高到非常大的数字,最终导致结太少,我也无法在整个 x 范围内找到平滑系数(在接近零和 1e23 的值之间跳跃,这是非物理的)结的数量随着 s 减少。似乎我无法同时找到合适的参数 s 和节数。

3) 我使用了 UnivariateSpline(x, y, k=3, s=0.03) 在这里,我发现对改变 s 有更好的敏感性,但是对应的 get_coeffs() 方法并没有为每个区间提供 4 个系数而是只有一个,我不明白。

4)我还尝试了使用三阶多项式的分段脊线回归,但是这种方法为拟合提供了太大的百分比误差,因此让标准样条方法之一工作会很棒。

我错过了什么?有人可以帮忙吗?

0 投票
1 回答
686 浏览

python - 如何获得机器人项目三次样条曲线上的最近点?

我有一个机器人,我想让这个机器人按照一个预先定义的路径,在外面的一个场地上以八字形的形式出现。机器人不易操控,风等外部因素使机器人很可能不会遵循确切的路径,因此它通常会靠近路径。

我想让它遵循的路径是通过定义五个点并使用三次样条在这些点上创建一条线形成的(我用来定义此路径的代码在此消息下方):

在任何特定时刻我都希望能够

我总是希望能够为机器人提供一个在三次样条线上的转向点。为了能够做到这一点,我认为最简单的方法是:

  1. 计算三次样条上距离机器人当前位置最近的点
  2. 沿三次样条线推进0.2单元以确定机器人要瞄准的新航点。

例如,如果机器人在上面的网格中的位置是x=0.4, y=-0.5,则最近的点是近似x=0.4, y=-0.28的,新的路点将是近似的x=0.22, y=-0.18

在此处输入图像描述

现在我有三个问题:

  1. 如何在三次样条上找到最近的点?
  2. 如何从三次样条上的找到点“前进”0.2 个单位?
  3. 即使路径在中间交叉,我如何保持在给定的路径上?

欢迎所有提示!

0 投票
2 回答
642 浏览

r - 为什么`ns(0.8)`或`ns(c(0.8))`在外部函数调用(arg 1)`中返回`NA/NaN/Inf`?

为什么ns(0.8)还是ns(c(0.8))返回NA/NaN/Inf in foreign function call (arg 1)

ns(c(0.8, 1.0))工作正常,但我想知道为什么只给 1 个值会ns导致NA/NaN/Inf in foreign function call (arg 1).

例子:

0 投票
1 回答
1734 浏览

r - R中的单调样条

我正在尝试使用R 中的 spline2 包来构建单调样条曲线。

我在评估模型以获取自变量的新值时遇到了麻烦。一般来说,我很难掌握 R 对“预测”的处理及其与 spline2 的关系,以及如何使用生成的 bs 对象。

我尝试按照使用 spline1 的示例进行操作。我的数据位于名为 BRIyII 的数据框中,具有自变量 t 和因变量 P,因此:

产量: 在此处输入图像描述

所以我这样做:

现在,如果我们:

它产生: 在此处输入图像描述

所以我的问题是:

1-由于最右边的预测值(红点)低于其左边的值,我是否误解了 m 样条的“单调”性质?

2- 如何评估 BRIyII$t 中定义的值以外的样条曲线?我尝试了几种组合,但我缺乏 R 语法知识。理想情况下,我想做类似的事情: