我有一个使用matploblib轴3D生成的数据的3D散点图。我需要决定它是在平面上还是在曲线上。我正在试图理解视觉上的差异,这将表明平面或曲线。我的猜测是,如果沿着很大范围的z值存在点,那么它就位于曲线上,因为如果它位于平面上,这意味着这些点只分布在平坦的表面上。即使我的猜测是正确的,但由于排除了唯一的另一种可能性,我才是正确的,那么如果数据位于曲线上,我如何具体判断呢?
发布于 2020-10-27 17:33:36
如果平面倾斜,您还会发现一个很大范围的z值。
假设您的3D points在nx3数组中,您可以使用以下公式计算适合它们的平面:
centroid = np.mean(points, axis=0)
_, eigenvalues, eigenvectors = np.linalg.svd(points - centroid, full_matrices=False)
normal = eigenvectors[2]
dispersion = eigenvalues[2]最接近散乱点的平面由点(centroid)及其normal向量定义。
然后,根据法线轴上的dispersion值,您可以确定它是足够低(点位于平面上)还是太高(它们不位于平面上)。
https://stackoverflow.com/questions/64524623
复制相似问题