1 c++ matrix triangular eigen eigen3
如何使用特征库计算输入矩阵的下三角而不改变列顺序?
例如对于矩阵:
A=[1 2 3;4 5 6 ;7 8 9]
Run Code Online (Sandbox Code Playgroud)
我希望结果是:
1 0 0
4 0 0
7 0 0
Run Code Online (Sandbox Code Playgroud)
您的文字和您的示例不匹配。我将通过三种可能的方式来解释您的问题。首先,我们将设置矩阵:
Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
Run Code Online (Sandbox Code Playgroud)
如果您想要实际的下三角矩阵,您可以使用:
std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";
Run Code Online (Sandbox Code Playgroud)
或类似的。结果是:
1 0 0
4 5 0
7 8 9
Run Code Online (Sandbox Code Playgroud)
请注意您的示例中缺少的 5、8、9。如果您只想要最左边的列,您可以使用:
std::cout << mat.col(0) << "\n\n";
Run Code Online (Sandbox Code Playgroud)
这使
1
4
7
Run Code Online (Sandbox Code Playgroud)
如果(如示例的第二部分所示)您想要,mat * [1, 0, 0]那么您可以进行矩阵乘法(不推荐)或仅构造结果:
Matrix3d z = Matrix3d::Zero();
z.col(0) = mat.col(0);
std::cout << z << "\n\n";
Run Code Online (Sandbox Code Playgroud)
其结果与您的示例相同:
1 0 0
4 0 0
7 0 0
Run Code Online (Sandbox Code Playgroud)