【问题标题】:Fitting curves to a set of points将曲线拟合到一组点
【发布时间】:2012-10-22 17:26:23
【问题描述】:

基本上,我有一组最多 100 个坐标,以及曲线在第一个点和最后一个点的所需切线。

我研究过各种曲线拟合方法,我的意思是一种算法,它采用输入的数据点和切线,并输出固化方程,例如高斯法和插值法,但我真的很难理解他们。

我不是要代码(如果您选择提供代码,那是可以接受的 :)),我只是在寻求有关该算法的帮助。它最终将被转换为 iPhone 应用程序的 Objective-C,如果这有什么改变的话..

编辑: 我知道所有点的顺序。它们并不太靠近,因此必须通过所有点 - 也就是插值(除非有人可以提出其他建议)。据我所知,代数曲线是我正在寻找的。顺便说一下,这一切都是在2D平面上完成的

【问题讨论】:

  • 很多问题:您是在谈论插值(将遍历所有点)还是近似(可能有一段距离)?您想要整个曲线的单个方程,还是可以接受分段描述?你需要什么样的输出曲线?贝塞尔样条曲线、代数曲线,还是其他什么东西?你知道你的点在曲线上的顺序吗?我们在这里讨论的是 2D 平面中的点吗?

标签: objective-c ios math interpolation gaussian


【解决方案1】:

我建议考虑三次样条。在Numerical Recipes book (chapter 3.3)中有一些解释和代码可以用纯C语言计算它们

【讨论】:

    【解决方案2】:

    大多数插值方法最初都使用函数:给定一组 xy 值,它们会计算一个计算 y 值的函数对于每个 x 值,满​​足指定的约束。由于函数只能为每个 x 值计算单个 y 值,因此这样的曲线不能在自身上循环。

    要将其转换为真正的 2D 设置,您需要 两个 函数分别计算 xy 值基于一些通常称为 t 的参数。所以第一步是为您的输入数据计算 t 值。您通常可以通过对欧几里德距离求和来获得一个很好的近似值:考虑一条将所有点与直线段连接起来的折线。那么参数就是每个输入对沿这条线的距离。

    所以现在你有两个插值问题:一个从 t 计算 x,另一个从 t 计算 y >。您可以将其表述为spline interpolation,例如使用三次样条。这为您提供了一个大型线性方程组,您可以迭代求解,直至达到所需的精度。

    样条插值的结果将是对合适曲线的分段描述。如果你想要一个单一的方程,那么拉格朗日插值就可以满足这个要求,但是对于许多输入数据集,结果可能会有奇怪的曲折。

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 2012-06-22
      • 2017-03-13
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 2021-03-02
      相关资源
      最近更新 更多