C++ 特征矩阵的下三角

C++ 特征矩阵的下三角,c++,matrix,eigen,eigen3,triangular,C++,Matrix,Eigen,Eigen3,Triangular,如何在不改变列顺序的情况下使用库计算输入矩阵的下三角 例如,对于矩阵: A=[1 2 3;4 5 6 ;7 8 9] 我希望结果是: 1 0 0 4 0 0 7 0 0 您的文本和示例不匹配。我将通过三种可能的方式来理解你的问题。首先,我们将设置矩阵: Matrix3d mat; mat << 1, 2, 3, 4, 5, 6, 7, 8, 9; 注意示例中缺少的5,8,9。如果只需要最左边的列,可以使用: std::cout << Matrix3d(mat.tri

如何在不改变列顺序的情况下使用库计算输入矩阵的下三角

例如,对于矩阵:

A=[1 2 3;4 5 6 ;7 8 9]
我希望结果是:

1 0 0
4 0 0
7 0 0

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

Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
注意示例中缺少的5,8,9。如果只需要最左边的列,可以使用:

std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";
std::cout << mat.col(0) << "\n\n";
如果(如示例的第二部分所示)需要
mat*[1,0,0]
,则可以执行矩阵乘法(不推荐)或仅构造结果:

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

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

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

Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
注意示例中缺少的5,8,9。如果只需要最左边的列,可以使用:

std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";
std::cout << mat.col(0) << "\n\n";
如果(如示例的第二部分所示)需要
mat*[1,0,0]
,则可以执行矩阵乘法(不推荐)或仅构造结果:

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

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

欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请。您可能还想学习如何创建一个。到目前为止,您尝试了什么?“不改变列顺序”是什么意思?我不明白你到底想要达到什么,也许你可以添加一个最小的例子!?欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请。您可能还想学习如何创建一个。到目前为止,您尝试了什么?“不改变列顺序”是什么意思?我不明白你到底想要达到什么,也许你可以添加一个最小的例子!?