eigen 3.3 SparseMatrix <bool>操作

时间:2016-11-10 22:08:05

标签: eigen

我想使用Eigen::SparseMatrix<bool>执行操作,而不必自己循环矩阵。 过去在Eigen 3.2中可以实现,但该代码不再在3.3版本中编译。 例如,以下代码在3.2中运行良好:

Eigen::SparseMatrix<bool> a(3,3), b(3,3), c(3,3);
a = b + c;

在没有编写循环的情况下,是否有一种简单/简单的方法可以在Eigen 3.3中执行“和”和“或”操作?

1 个答案:

答案 0 :(得分:0)

为了与c ++标准行为保持一致,添加布尔矩阵现在返回整数表达式,但同时,由于含糊不清,不推荐添加布尔矩阵。使用密集矩阵,您可以为此目的访问运算符||&&,这些也必须添加到稀疏矩阵中(对于3.3.1)。

与此同时,您仍然可以通过将结果转换为bool(并忽略已弃用的警告)来解决此问题:

a = (b+c).cast<bool>();