我想做布尔矩阵加。我怎么能在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_?
答案 0 :(得分:0)
Eigen似乎没有提供特定的函数来处理布尔矩阵。但是,您可以使用布尔值可靠地转换为0(false
)和1(true
)的事实(请参阅bool to int conversion)。注意到0=0*0=0*1=1*0
和1*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;
}