假设你通过一些方法,获得了一些平面上的点pointN(1*3),如何获得该平面的法矢law(3*1)呢。
仅测量了平面上的三个点
如果我们只获得了三个点,那么我们可以两两相减,获得两个向量vec(1*3),形成一个矩阵M。因为平面法矢和平面上的任意一个向量都垂直,所以有M*law=0,求解M的零空间即可获得law
测量了平面上的多个点
直接的想法
但是,仅仅测量三个点的话,收到误差影响会非常大,因此我们一般通过测量许多个点。那么如何通过许多个点的数据来获得平面法矢呢?
当我们获得很多个点时,M矩阵的维度为N*3,law的维度仍然是1*3。考虑M*law=0,此时求解M的零空间,很可能为0,因为M中的每一个vector代表平面上的一个向量,当我们测量到的点不在一条直线上时,平面上的向量的秩应当为2.但是测量中存在噪声,使得测量值在垂直于平面的方向上有发生偏移,这些向量变为从空间中获得的向量(而不是从平面中),其秩为3,列满秩。当M矩阵列满秩时,仅当law为零向量时等式才成立。
考虑在等式左右各左乘一个M',获得M'M*law=0,此时求解M'M(3*3)的零空间将更加容易。但是实际上M'M仍然是一个满秩矩阵,仍然无法求出law。其满秩的原因如下:
M列满秩,因此