我想使用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中执行“和”和“或”操作?
答案 0 :(得分:0)
为了与c ++标准行为保持一致,添加布尔矩阵现在返回整数表达式,但同时,由于含糊不清,不推荐添加布尔矩阵。使用密集矩阵,您可以为此目的访问运算符||
和&&
,这些也必须添加到稀疏矩阵中(对于3.3.1)。
与此同时,您仍然可以通过将结果转换为bool(并忽略已弃用的警告)来解决此问题:
a = (b+c).cast<bool>();