如何在特征

时间:2017-03-14 09:16:17

标签: matrix eigen diagonal

我有一组对角矩阵说

a1=(2 0
    0 3)

a2=(3 0
    0 5) 

如何创建a = a1:a2的第三个矩阵,其中:是concat运算符i,e

a=(2 0 3 0
   0 3 0 5) 

我使用a1

创建了a2DiagonalMatrix矩阵
DiagonalMatrix<double, 2> a1(2, 3);
DiagonalMatrix<double, 2> a2(3, 5);

我无法使用块运算符,因为它未在DiagonalMatrix类中实现。

此外,我无法将矩阵可视化为

cout << a1 << endl; 

给我编译错误。

2 个答案:

答案 0 :(得分:1)

首先,您应该创建一个密集(或稀疏)矩阵:

Matrix<double, 2, 4> result;

其次,您可以将两个对角矩阵分别分配给左右两列。

result.leftCols(2) = a1;
result.rightCols(2) = a2;

您可以通过将对角矩阵转换为密集矩阵来可视化它:

cout << a1.toDenseMatrix() << endl;

答案 1 :(得分:0)

您可以将对角线连接到目标的对角线:

DiagonalMatrix<double,Dynamic> a3(4);
a3.diagonal() << a1.diagonal(), a2.diagonal();