1

我需要计算曲线之间的某种距离。

这些是一般曲线,可能不是函数——也就是说,x 的某些值可能映射到一个以上的值。

编辑

  • 曲线以 X、Y 对列表的形式给出,逻辑曲线是按给定顺序通过所有点的线。一个典型的数据集将包括大约 1000 个点

  • 如前所述,曲线可能不是函数,但通常类似于函数

这个问题我们阻止使用 interp1 或曲线拟合工具箱(在 Matlab 中)

我在考虑曲线之间区域面积的距离测量 - 但任何合理的替代方案都可以。

编辑 曲线的示例插图,以及我要计算的区域 曲线

首选 Matlab 解决方案,但其他语言也可以。

4

2 回答 2

2

如果您具有该类型的函数y = f(x)并且它们是在同一域中定义的,那么查找“距离”的常用方法是使用 L2 规范,如此处所述http://en.wikipedia.org/wiki/L2_norm #p-范数. 这只是函数平方差的绝对值的积分。如果你有参数曲线,那么你不能直接使用这种方法。如果 L2 规范不足以满足您的要求,那么您将需要对“距离”的含义提供更具体的定义。如果您不清楚您需要什么,请尝试查看不同类型的数学范数,看看是否有任何常用的范数是您需要的(即 L1 范数、统一范数)。上面的维基百科链接是一个很好的起点。如果 L2 足够好,那么您需要一种方法来计算您所拥有的积分 - 那里有许多数值积分技术,我建议 google 是您的朋友(或一本好的数值分析教科书)。

如果您确实有参数类型曲线,那么这是非常重要的。使用曲线之间的“区域”不是一个好主意,因为没有明确的方法来定义该区域,并且在您可以拥有自相交曲线的一般情况下会变得更加复杂。如果您的曲线以相同的方式参数化,您可以尝试一些非常粗略的测量,您可以在参数范围内以等距值评估每条曲线上的点,然后计算每条曲线之间的距离长度,求和并将平均值作为概念的“亲近”。即,将您的参数范围划分为一组 {u_0, ... , u_n} 并评估每个曲线1(u_i)和曲线2(u_i)i以生成一组n配对点。然后将每对点之间的欧几里得距离相加。

虽然这是非常非常粗略的,如果参数化不同,那么它不会有太大用处。

于 2013-03-03T15:19:38.047 回答
0

您需要定义曲线之间的距离是什么意思。如果它是两条一般曲线之间最接近的方法,那么解决问题就变得相当困难。

如果“曲线”甚至不能表示为 x 的单值函数,那么它会变得更加复杂。

仅仅告诉我们你需要定义“某种距离”这个陈述过于宽泛,无法成为这里的主题,并且它表示你还没有考虑到你想要解决的问题。

如果您只想告诉我们这些曲线是两条完全通用的参数曲线,它们可能是闭合的,也可能不是闭合的,或者它们甚至可能不在同一个域上,那么这个问题就变得完全不适定以至于不可能回答。在这种情况下,两条曲线之间的面积是多少?

如果曲线是在 SAME 支持上定义的,那么减去它们并积分绝对值或差的平方就足够了。但是您已经告诉我们,这些“曲线”可能是多值的。在这种情况下,基本上不可能按照您的要求去做。

于 2013-03-03T15:08:33.717 回答