Eigen的三角视图问题

时间:2017-03-13 11:01:21

标签: c++ eigen

我正在使用Eigen C ++库的triangleView功能来跳过矩阵的上三角形部分的计算,如下所示:

C.triangularView<Lower>() = A*B;

这符合我的意图,但当我使用&#34; StrictlyLower&#34;为了跳过对角线的计算,结果矩阵似乎已损坏。以下是示例代码:

#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;
using namespace std;

int main()
{
   MatrixXi A, B, C, D;
   A = MatrixXi::Ones(5,5);
   B = MatrixXi::Ones(5,5);

   C = MatrixXi::Zero(5,5);
   D = MatrixXi::Zero(5,5);

   C.triangularView<Lower>() = A*B;
   D.triangularView<StrictlyLower>() = A*B;

   cout << "\n C = \n " << C << endl;
   cout << "\n D = \n " << D << endl;
}

输出:

C =

5 0 0 0 0

5 5 0 0 0

5 5 5 0 0

5 5 5 5 0

5 5 5 5 5

D =

5 5 5 5 0

0 5 5 5 0

0 0 5 5 0

0 0 0 5 0

0 0 0 0 5

现在C看起来像我期待的那样。但D应该是相同的,除了对角线上的0。 为什么D看起来像这样,这是一个已知问题?

1 个答案:

答案 0 :(得分:0)

这似乎是Eigen的一个错误。您可以尝试下载最新版本。如果这不起作用,您可以做的最好的事情是填写bug report