特征矩阵的下三角

Posted

技术标签:

【中文标题】特征矩阵的下三角【英文标题】:Lower triangular of matrix in eigen 【发布时间】:2015-06-25 07:33:50 【问题描述】:

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

例如矩阵:

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

我希望结果是:

1 0 0
4 0 0
7 0 0

【问题讨论】:

欢迎来到 ***.com。请花点时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请read about how to ask good questions。您可能还想了解如何创建Minimal, Complete, and Verifiable Example。 到目前为止你尝试过什么? “不更改列顺序”是什么意思?我不明白你到底想要达到什么,也许你可以添加一个最小的例子!? 【参考方案1】:

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

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

【讨论】:

以上是关于特征矩阵的下三角的主要内容,如果未能解决你的问题,请参考以下文章

如何制作用于围绕 z 轴旋转三角形的特征模型矩阵

用QR方法怎样求矩阵的特征值?

矩阵的特征值分解

利用矩阵元素怎么估计矩阵的特征值或谱半径范围

6.矩阵的特征和线性代数

matlab QR分解 求矩阵的特征值