减少曲线中点的数量

4

enter image description here

给定一组(x,y)坐标的曲线。我正在通过两个点之间的公差检查来减少下降曲线上的点数,公差为(y2-y1)/y1,如果此公差低于预定义值0.01,则考虑该点,否则删除该点。

通过这样做,我可以在曲线底部获得密集点。

如何使曲线顶部也像底部一样密集?

一些示例点:

9.99E-10    1.17E+00
1.50E-09    7.53E-01
2.00E-09    1.77E-01
2.50E-09    1.61E-02
2个回答

2

你只是比较高度的变化,但更重要的是斜率的变化。因此,请尝试以下操作:

考虑前三个点:

如果从第一点到第二点的斜率几乎等于从第一点到第三点的斜率,则删除第二点。重复此步骤。

如果斜率发生了显著变化,则保留第二个点,并将其作为新的第一个点形成新的三元组。


这基本上就是我的答案所说的,即使用斜率的瞬时变化 (y2 - y1) 来确定在积分中使用多少个点。 - Tim Biegeleisen

1
你应该使用曲线的斜率来确定需要多少个样本点。一种方法是在每个点计算瞬时导数,可以近似表示为(y2-y1)/(x2-x1),其中两个点非常靠近。您可以在等距间隔的网格上为整个曲线计算此项,即(x2-x1)。然后您会发现,您最初的方法并不远离,y2-y1可用于近似斜率,因此可以确定对于曲线的固定宽度采样需要多少采样点。
通过使用y2-y1,曲线的中间部分将具有最大数量的采样点。这在直觉上是有意义的,因为函数在中间变化得最快。而在曲线的边缘,您需要相对较少的样本,因为斜率变化不大。

使用“y2 / y1”不会减少点数,我将容差设置为0.01。 - EmptyData
抱歉,我原本打算写 y2 - y1。这意味着当函数的斜率变化更快时,您需要添加更多的点,这正是您想要的。 - Tim Biegeleisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接