我需要计算到曲线之间的距离。
这些都是一般的曲线,可能不是函数--也就是说,x的一些值可以映射到多个值。
编辑
这个问题是如何防止使用interp1或曲线拟合工具箱的(在Matlab中)
距离测量--我在考虑曲线之间区域的面积--但是任何合理的选择都可以。
编辑曲线的示例说明,以及我想要计算的面积

首选Matlab解决方案,但其他语言也不错。
发布于 2013-03-03 15:19:38
如果您有类型为y = f(x)的函数,并且它们是在同一个域上定义的,那么查找“距离”的一个常见方法是使用L2规范,如这里所解释的norm#p-norm。这只是函数平方差的绝对值的积分。如果你有参数曲线,那么你就不能直接采用这种方法。如果L2规范不足以满足您的需求,那么您将需要对“距离”的含义提供一个更具体的定义。如果你不清楚你需要什么,试着看看不同类型的数学规范,看看是否有任何常用的规范是你所需要的(即L1规范,统一规范)。上面的wikepedia链接是一个很好的起点。如果L2足够好,那么你需要一种方法来计算你所拥有的积分--有很多数值集成技术,我建议谷歌是你的朋友(或者一本好的数值分析教材)。
如果你有参数型曲线,那么这是非常重要的。使用曲线之间的“区域”不是一个好主意,因为没有明确的方法来定义这个区域,而且在一般情况下,你可能会有一个自交曲线,这会变得更加复杂。如果你的曲线是以同样的方式被参数化的,你可以尝试一些非常粗糙的测量,你可以在参数范围内的等距值上计算每条曲线上的点,然后计算每条曲线之间的距离的长度,和,并把平均值作为“接近”的概念。也就是说,将您的参数范围划分为一个集合{u_0,.,u_n},并为每个i计算curve1(u_i)和curve2(u_i),以生成一组n配对点。然后把每对点之间的欧几里德距离和起来。
这是非常粗糙的,虽然,如果参数化是不同的,那么它将不会有多大的用处。
发布于 2013-03-03 15:08:33
你需要定义曲线之间的距离是什么意思。如果它是两个一般曲线之间最接近的方法,那么解决这个问题就变得相当困难。
如果“曲线”甚至不能表示为x的单值函数,那么它就变得更加复杂。
仅仅告诉我们你需要定义“某种距离”,这是一种过于宽泛的表述,不可能成为这里的主题,它说你还没有想出你想要解决的问题。
如果你愿意告诉我们的是,这些曲线是两个完全一般的参数曲线,它们可能是封闭的,或者它们甚至不存在于同一区域,那么这个问题就变得完全不合适,以至于不可能回答。在这种情况下,两条曲线之间的面积是多少?
如果曲线是在相同的支撑下定义的,那么减去它们,差的绝对值或平方的积分就足够了。但你已经告诉我们,这些“曲线”可能是多值的。在这种情况下,基本上是不可能做你的要求。
https://stackoverflow.com/questions/15186984
复制相似问题