特征:反转矩形矩阵(最小范数解)

时间:2017-08-16 11:53:49

标签: matrix linear-algebra eigen eigen3 matrix-inverse

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

我有一个"胖"矩阵 A (行数小于cols数),我想找到这个矩阵的最小范数伪逆。

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

根据幻灯片,我可以使用直接的方法来使用此公式

<div class="grid-outer">
    <div class="cell">1</div>
    <div class="cell">2</div>
    <div class="cell">3</div>
    <div class="cell">4</div>
</div>

但我希望在Eigen中有更优雅的解决方案

PS抱歉我的英文

1 个答案:

答案 0 :(得分:2)

如果A是满级,那么您的公式是正确的,您也可以从HouseholderQR的{​​{1}}分解获得它:

A.transpose()

如果没有,那么你将不得不使用更简单易用的Eigen::CompleteOrthogonalDecomposition,因为它的主要目的是解决最小范数问题:

MatrixXd A(3,6);
A.setRandom();
HouseholderQR<MatrixXd> qr(A.transpose());
MatrixXd pinv;
pinv.setIdentity(A.cols(), A.rows());
pinv = qr.householderQ() * pinv;
pinv = qr.matrixQR().topLeftCorner(A.rows(),A.rows()).triangularView<Upper>().transpose().solve<OnTheRight>(pinv);