【问题标题】:reduce number of points in a curve减少曲线中的点数
【发布时间】:2015-12-31 17:36:05
【问题描述】:

有一个带有 (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

【问题讨论】:

    标签: algorithm graph-algorithm


    【解决方案1】:

    您只是在比较高度的变化,但似乎更重要的是坡度的变化。所以尝试以下方法:

    考虑前三点:

    如果从第 1 到第 2 的斜率几乎等于从第 1 到第 3 的斜率,则删除第 2 点。重复。

    如果坡度变化很大,请保留第 2 点,并将其作为新三元组的新第 1 点。

    【讨论】:

    • 这基本上就是我的回答所说的,即使用斜率的瞬时变化(y2 - y1)来确定要在求积中使用多少点。
    【解决方案2】:

    您应该使用曲线的斜率来确定您需要多少个样本点。一种方法是计算每个点的瞬时导数,可以近似为(y2 - y1) / (x2 - x1),其中两个点彼此非常接近。您可以为等距(x2 - x1) 的网格上的整条曲线计算此项。然后您可以看到您的原始方法已经不远了,y2 - y1 可用于近似斜率,因此对于固定宽度的曲线样本,您需要多少采样点。

    通过使用y2 - y1,曲线的中间部分将拥有最多的采样点。这在直觉上是有道理的,因为函数在中间变化最快。在曲线的边缘,您需要的样本相对较少,因为斜率变化不大。

    【讨论】:

    • 使用 'y2/y1' 不是减分,我使用的公差为 0.01
    • 对不起,我本来打算写y2 - y1。这意味着当函数的斜率变化更快时,您可以添加更多点,这正是您想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多