Matlab中矩阵的线性最小二乘法

时间:2014-12-22 18:16:00

标签: matlab math

给出图像中一组3D点的透视投影方程式:

lambda_ij * x_ij = P_i * X_j;

如何估计lambda_ij矩阵的值,使最小二乘意义上的上述方程最小化:

鉴于:

x_ij is 3 by n matrix

P_i is 3 by 4 matrix

X_j is 4 by n matrix.

我试过了

x_ij \ P_i * X_j

但这给了我一个我无法解释的n x n矩阵,因为我希望lambda_ij应该是1 x n矩阵。

编辑:  lambda_ij .* x_ij是逐元素乘法

1 个答案:

答案 0 :(得分:0)

为什么lambda_ij应为1 x nP_i*X_j3 x n,这意味着lambda_ij * x_ij必须为3 x n,这意味着lambda_ij必须为3 x 3

矩阵乘法不是可交换的,所以你必须小心顺序。你真正应该做的是用x_ij^(t)将等式的两边后乘,其中^(t)是伪逆的坏符号。用MATLAB斜杠写出然后变成

(P_i * X_j) / x_ij

但是,这看起来并不适合透视变换。