将曲线拟合到一组点

时间:2012-10-22 17:26:23

标签: objective-c ios math interpolation gaussian

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

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

我不是要求代码(如果你选择给它,那可以接受:)),我只是在寻找这个算法的帮助。如果改变了什么,它最终将转换为适用于iPhone应用程序的Objective-C ..

修改 我知道所有要点的顺序。它们不是太靠近,所以通过所有点是必要的 - 也就是插值(除非任何人都能提出其他建议)。据我所知,代数曲线是我正在寻找的。这一切都是在 2D 平面上完成的

2 个答案:

答案 0 :(得分:3)

我建议考虑三次样条。在Numerical Recipes book (chapter 3.3)

中的普通C中有一些解释和代码来计算它们

答案 1 :(得分:1)

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

要将其转换为真正的2D设置,您需要两个函数来计算 x resp。基于某些通常称为 t 的参数的 y 值。因此,第一步是为输入数据计算 t 值。通常可以通过对欧氏距离求和得到一个很好的近似值:考虑将所有点与直线段连接起来的折线。然后参数将是每条输入对沿该线的距离。

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

样条插值的结果将是对合适曲线的分段描述。如果你想要一个单独的等式,那么拉格朗日插值将适合该账单,但结果可能有许多输入数据的奇数曲折。