Matrix 特征值:串联矩阵和向量 使用本征C++库,我有Matrx3f代码> A,向量4f b>代码>,向量4f c。我想用这些创建一个矩阵4fM。我希望M的顶部三乘三角是A,我希望M的最后一列是b,我希望M的底部一行是c

Matrix 特征值:串联矩阵和向量 使用本征C++库,我有Matrx3f代码> A,向量4f b>代码>,向量4f c。我想用这些创建一个矩阵4fM。我希望M的顶部三乘三角是A,我希望M的最后一列是b,我希望M的底部一行是c,matrix,eigen,Matrix,Eigen,我知道如何做到这一点,只需创建一个Matrix4f并单独分配每个元素。但有没有一个更优雅的解决方案,Eigen支持?这算是足够优雅了吗 #include <Eigen/Sparse> #include <iostream> using namespace Eigen; using std::cout; using std::endl; int main(int argc, char *argv[]) { Matrix4f m = Matrix4f::Rand

我知道如何做到这一点,只需创建一个Matrix4f并单独分配每个元素。但有没有一个更优雅的解决方案,Eigen支持?

这算是足够优雅了吗

#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;
}
#包括
#包括
使用名称空间特征;
使用std::cout;
使用std::endl;
int main(int argc,char*argv[])
{
Matrix4f m=Matrix4f::Random();
矩阵x3f A=矩阵x3f::常数(0.1);
Vector4f b=Vector4f::常数(0.2),c=Vector4f::常数(0.3);

如果
b
实际上是一个向量3f,你还可以使用
m.col(3)=b
将最后一列的前三个元素分配给
b
,或者
b
必须是向量4f吗?@Karnivaurus不,它们必须是相同的大小。你可以指定
m.block(0,3,1)=b;