特征布尔矩阵加

时间:2017-02-10 01:33:30

标签: eigen

我想做布尔矩阵加。我怎么能在Eigen做到这一点? 我的以下示例仅给出标量+。

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

using namespace std;
using namespace Eigen;


int main()
{
   Eigen::Matrix<bool, 4, 4> m;
   m << 0,1,1,1,
    1,0,1,0,
    1,1,0,0,
    1,1,1,0;
   cout << m + m;  //should be logical_and here
}

我怎么能在这里使用logical_?

1 个答案:

答案 0 :(得分:0)

Eigen似乎没有提供特定的函数来处理布尔矩阵。但是,您可以使用布尔值可靠地转换为0(false)和1(true)的事实(请参阅bool to int conversion)。注意到0=0*0=0*1=1*01*1=1很明显,布尔值作为整数的乘法与逻辑和布尔运算相同(直到类型)。因此,以下内容应该有效:

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

using namespace std;
using namespace Eigen;


int main()
{
   Eigen::Matrix<bool, 4, 4> m;
   m << 0,1,1,1,
    1,0,1,0,
    1,1,0,0,
    1,1,1,0;
   Eigen::Matrix<bool, 4, 4> result = m.cwiseProduct(m);
   cout << result;
}