10

这只是一个基本问题。我正在拟合线以使用polyfit. 在某些情况下,我的散点具有相同polyfit的 X 值并且无法拟合线。必须有一些东西可以处理这种情况。毕竟,它只是一个适合的线条。

我可以尝试交换 X 和 Y,然后执行一条线。任何更简单的方法,因为我有很多散点集并且想要一个通用的方法来检查线条。

主要目标是找到合适的线并丢弃非线性特征。

4

2 回答 2

6

首先,这是由于您使用的拟合方法造成的。执行时polyfit,您正在使用最小二乘法计算Y与线的距离。


(来源:une.edu.au

显然,它不适用于垂直线。顺便说一句,即使你有接近垂直线的东西,你也可能会得到数值不稳定的结果。

有2个解决方案:

  1. 如你所说,交换 x 和 y,如果你知道这条线几乎是垂直的。然后,计算逆线性函数。
  2. 在与线的垂直距离上使用最小二乘法,而不是垂直(见下图)(更多解释在这里


(来自 MathWorld - Wolfram 网络资源:wolfram.com

于 2012-06-11T14:50:59.830 回答
2

Polyfit 使用线性普通最小二乘近似并且不允许重复横坐标,因为生成的 Vandermonde 矩阵将是秩不足的。我建议尝试找到更具统计性质的东西。如果您想研究 Andreys 方法,它通常称为 Total minimum squares 或 Orthogonal distance regression http://en.wikipedia.org/wiki/Total_least_squares

我还试探性地提出了检测何时同时具有 x 值的可能性,然后围绕原点旋转数据,拟合线,然后将线转换回来。我不能说这会表现得多么糟糕,只有你可以根据你的准确性要求来决定它是否是一个选项。

于 2012-06-11T14:52:45.100 回答