特征中矩阵的下三角形

时间:2015-06-25 07:33:51

标签: c++ matrix eigen eigen3 triangular

如何使用eigen库来计算输入矩阵的下三角而不改变列顺序?

例如对于矩阵:

A=[1 2 3;4 5 6 ;7 8 9]

我希望结果是:

1 0 0
4 0 0
7 0 0

1 个答案:

答案 0 :(得分:4)

您的文字和示例不匹配。我会通过三种可能的方式来理解你的问题。首先,我们设置矩阵:

Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;

如果你想要实际的下三角矩阵,你可以使用:

std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";

或类似的。结果是:

1 0 0
4 5 0
7 8 9

请注意您的示例中缺少的5,8,9。如果你只想要最左边的列,你可以使用:

std::cout << mat.col(0) << "\n\n";

给出了

1
4
7

如果(如您的示例的第二部分所示)您想要mat * [1, 0, 0],那么您可以进行矩阵乘法(不推荐)或只是构造结果:

Matrix3d z = Matrix3d::Zero();
z.col(0) = mat.col(0);

std::cout << z << "\n\n";

给出与您的示例相同的结果:

1 0 0
4 0 0
7 0 0