Algorithm 划分三次样条计算

Algorithm 划分三次样条计算,algorithm,math,curve-fitting,spline,Algorithm,Math,Curve Fitting,Spline,我在3D中有n点(20k到30k),我想用三次样条插值它们。这里的问题是,我不会同时拥有所有这些点,它们将被发送给我。所以我不想等到收到所有的数据后才开始插值 因此,我选择将这些点拆分为子集,插值第一个点子集,使用它,然后在开始时插值下一个点子集,依此类推 (将这些点拆分为数百个点的子集n1,n2,…,并找到每个子集的样条曲线,以便结果与n点样条曲线的结果相同。) 我认为在计算过程中重叠这些子集就足够做到这一点了,但似乎不行。您建议如何解决此问题?插值样条曲线的计算是在整个点序列上执行的,对于重

我在3D中有
n
点(20k到30k),我想用三次样条插值它们。这里的问题是,我不会同时拥有所有这些点,它们将被发送给我。所以我不想等到收到所有的数据后才开始插值

因此,我选择将这些点拆分为子集,插值第一个点子集,使用它,然后在开始时插值下一个点子集,依此类推

(将这些点拆分为数百个点的子集
n1,n2,…
,并找到每个子集的样条曲线,以便结果与
n
点样条曲线的结果相同。)


我认为在计算过程中重叠这些子集就足够做到这一点了,但似乎不行。您建议如何解决此问题?

插值样条曲线的计算是在整个点序列上执行的,对于重叠的两个分开的部分,结果会略有不同。例如,请注意,第一条样条曲线的最后一点的边界条件可能包括预定义的偏移或零曲率,而第二条样条曲线的相同部分将被计算以提供连续性

您可以尝试为重叠区域计算某种平滑过渡

编辑 问题更新后-我不认为平行治疗和你的问题之间有关系

相反,您可以使用C1连续性连接子范围:

计算第一组点的样条曲线插值。使用自由端条件-零曲率。记住终点的偏差(线性系数)

对于下一个集合,使用预定义的开始偏差计算样条曲线插值-从上一个集合开始,然后再次结束零曲率条件


顺便说一句,样条插值数千点应该工作得非常快(这是线性算法)。这真的是瓶颈吗?

您可以随时使用可用的点(大概是以正确的顺序!)开始插值。三次样条插值是一个非常稳定的过程,当添加更多点时,大部分曲线保持不变


如果您担心的是要避免多次重复整个计算,我想在几个重叠的部分(比如20个点)上工作,并放弃所有部分的10个极值点的结果就足够了。

我使用了三对角矩阵算法(线性算法)在样条计算中,但在我的例子中,它仍然是瓶颈。我需要子集之间的C2连续性。如何计算系数?线性算法是如此之快以至于并行化可能会使它变慢,除了无数个点。我使用三对角矩阵算法来寻找点的二阶导数,然后找到系数。我知道它是线性和快速的,但我需要在短时间内使用生成的样条曲线。在我的例子中,等待数千个点的计算时间太长了。所以我选择分割这些点,插值第一个点子集,使用它,然后在开始插值下一个点子集时,依此类推。也许选择并行化术语来解释我的需求不是一个好词。我更改了问题的标题。如果你告诉我们你有多少点,讨论就会轻松一些。即使使用解释语言,千点也不是什么大问题(低于一毫秒)。3D中的20k到30k点,这里的问题是我不会同时拥有所有这些点,它们会被发送给我。所以我不想等到收到所有的数据后才开始插值谢谢Yves,我会这样做的。