如何划分数字曲线

时间:2016-01-20 09:51:21

标签: algorithm curve-fitting curve

我有一个构成曲线的值表,我想在(Java或C)中使用一个算法来给出每个区间的值

enter image description here

我需要的结果=>

Groupe 1 => (0,0)(1,1)(2,2)
Groupe 2 => (2,2)(3,2)(4,2)
Groupe 3 => (4,2)(5,1.25)(6,0.5)
Groupe 4 => (6,0.5)(7,0.5)(8,0.5)(9,0.5)
Groupe 4 => (9,0.5)(10,1.5)(11,1.5)(12,1.5)

有什么方法能给我带给你的结果?

我需要该算法也可以使这个结构不仅仅是连接的线段 enter image description here

1 个答案:

答案 0 :(得分:1)

您需要的是插值算法。有许多具有不同的属性,很难说哪一个适合你。

基本上所有这些都取得了你所拥有的积分,并能够在两者之间建议合理的价值。

最简单的是线性插值。给定x,y1和x2之间的点x,y,你有y = (x-x1)/(x2-x1) * y1 + (x2-x)/(x2-x1) * y2,所以如果你选择一个x,你就可以找出y。这将为您提供直线段。

如果这对您的应用来说太简单,请查看一些曲线函数。 Bezier在许多情况下都是首选,因为它很快并且曲线取决于有限数量的相邻点。请参阅wikipedia

那就是说,记住所有这些都是近似值,并且有很多假设,因此不太可能有一个完全匹配基本事实。