这只是一个基本问题。我正在拟合线以使用polyfit
. 在某些情况下,我的散点具有相同polyfit
的 X 值并且无法拟合线。必须有一些东西可以处理这种情况。毕竟,它只是一个适合的线条。
我可以尝试交换 X 和 Y,然后执行一条线。任何更简单的方法,因为我有很多散点集并且想要一个通用的方法来检查线条。
主要目标是找到合适的线并丢弃非线性特征。
这只是一个基本问题。我正在拟合线以使用polyfit
. 在某些情况下,我的散点具有相同polyfit
的 X 值并且无法拟合线。必须有一些东西可以处理这种情况。毕竟,它只是一个适合的线条。
我可以尝试交换 X 和 Y,然后执行一条线。任何更简单的方法,因为我有很多散点集并且想要一个通用的方法来检查线条。
主要目标是找到合适的线并丢弃非线性特征。
首先,这是由于您使用的拟合方法造成的。执行时polyfit
,您正在使用最小二乘法计算Y
与线的距离。
(来源:une.edu.au)
显然,它不适用于垂直线。顺便说一句,即使你有接近垂直线的东西,你也可能会得到数值不稳定的结果。
有2个解决方案:
(来自 MathWorld - Wolfram 网络资源:wolfram.com)
Polyfit 使用线性普通最小二乘近似并且不允许重复横坐标,因为生成的 Vandermonde 矩阵将是秩不足的。我建议尝试找到更具统计性质的东西。如果您想研究 Andreys 方法,它通常称为 Total minimum squares 或 Orthogonal distance regression http://en.wikipedia.org/wiki/Total_least_squares
我还试探性地提出了检测何时同时具有 x 值的可能性,然后围绕原点旋转数据,拟合线,然后将线转换回来。我不能说这会表现得多么糟糕,只有你可以根据你的准确性要求来决定它是否是一个选项。