我有一组对角线矩阵
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
类创建a1
和a2
矩阵
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();