我有一组对角矩阵说
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
类
a2
和DiagonalMatrix
矩阵
DiagonalMatrix<double, 2> a1(2, 3);
DiagonalMatrix<double, 2> a2(3, 5);
我无法使用块运算符,因为它未在DiagonalMatrix类中实现。
此外,我无法将矩阵可视化为
cout << a1 << endl;
给我编译错误。
答案 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();