特征:连接矩阵和向量

时间:2015-03-10 11:55:00

标签: matrix eigen

使用Eigen C ++库,我有一个Matrix3f A,一个Vector4f b和一个Vector4f c。我想从这些中创建一个Matrix4f M。我希望M的顶部3 x 3角为A,我希望M的最后一列为b,我希望最后一行Mc

我知道如何通过简单地创建Matrix4f并单独分配每个元素来完成此操作。但是,Eigen支持更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:3)

这算得上还算优雅吗?

#include <Eigen/Sparse>
#include <iostream>

using namespace Eigen;
using std::cout;
using std::endl;

int main(int argc, char *argv[])
{

    Matrix4f m = Matrix4f::Random();
    Matrix3f A = Matrix3f::Constant(0.1);
    Vector4f b = Vector4f::Constant(0.2), c = Vector4f::Constant(0.3);
    cout << m << endl << endl;
    cout << A << endl << endl;
    cout << b << endl << endl;
    cout << c << endl << endl;

    m.block(0, 0, 3, 3) = A;
    m.col(3) = b;
    m.row(3) = c;

    cout << m << endl << endl;

    return 0;
}

请注意,您的问题有点模棱两可,因为(3,3)职位将由bc之间的分配顺序决定。