如何在特征素中对角线矩阵



我有一组对角线矩阵

a1=(2 0
    0 3)
a2=(3 0
    0 5) 

如何创建第三个矩阵,该矩阵是a = a1:a2 where:concat Operator i,e

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

我使用DiagonalMatrix类创建a1a2矩阵

DiagonalMatrix<double, 2> a1(2, 3);
DiagonalMatrix<double, 2> a2(3, 5);

我无法使用块运算符,因为它在对角线木质类中没有暗示。

我也无法将矩阵可视化为

cout << a1 << endl; 

给我编译错误。

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

Matrix<double, 2, 4> result;

第二,您可以分别为两个对角线矩阵分配给两个左右列。

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

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

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

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

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

最新更新