Matrix 特征值:逆矩形矩阵(最小范数解)

Matrix 特征值:逆矩形矩阵(最小范数解),matrix,linear-algebra,eigen,eigen3,matrix-inverse,Matrix,Linear Algebra,Eigen,Eigen3,Matrix Inverse,我有一个非常简单的问题,但不幸的是,我无法在Eigen文档中找到答案 我有一个“fat”矩阵a(行数小于列数),我想找到这个矩阵的最小范数伪逆 理想情况下,我希望通过幻灯片中指定的最小范数QR分解找到它 根据幻灯片,我可以使用直接的方法通过使用这个公式来实现这一点 A.transpose() * (A * A.transpose()).inverse() 但我希望在Eigen中有更优雅的解决方案 PS对不起我的英语如果A是满秩,那么你的公式是正确的,你也可以从HouseholderQR分解A.

我有一个非常简单的问题,但不幸的是,我无法在Eigen文档中找到答案

我有一个“fat”矩阵a(行数小于列数),我想找到这个矩阵的最小范数伪逆

理想情况下,我希望通过幻灯片中指定的最小范数QR分解找到它

根据幻灯片,我可以使用直接的方法通过使用这个公式来实现这一点

A.transpose() * (A * A.transpose()).inverse()
但我希望在Eigen中有更优雅的解决方案


PS对不起我的英语

如果A是满秩,那么你的公式是正确的,你也可以从
HouseholderQR
分解
A.transpose()
中获得它:

矩阵A(3,6);
A.setRandom();
户主qr(A.转置());
MatrixXd-pinv;
pinv.setIdentity(A.cols(),A.rows());
pinv=qr.householderQ()*pinv;
pinv=qr.matrixQR().topLeftCorner(A.rows(),A.rows()).triangularView().transpose().solve(pinv);
如果没有,则必须使用更简单的方法,因为它的主要目的是解决最小范数问题:

CompleteOrthogonalDecomposition<MatrixXd> cqr(A);
pinv = cqr.pseudoInverse();
完全正交分解cqr(A);
pinv=cqr.pseudoInverse();

您需要实际(伪)逆解,还是只想解方程?@chtz我需要逆解。该矩阵的分量将进一步用于大型最小二乘问题。
CompleteOrthogonalDecomposition<MatrixXd> cqr(A);
pinv = cqr.pseudoInverse();