【发布时间】:2012-11-12 11:19:18
【问题描述】:
我目前正在处理一个 MATLAB 项目,我想使用 C++ 和 Eigen 重新实现计算量最大的部分。 我想知道是否有办法执行以下操作(MATLAB 语法):
B = A(A < 3);
对于不熟悉 MATLAB 的人来说,上述命令初始化了一个矩阵 B,该矩阵由 A 中值小于 3 的单元格组成。
我从Eigen forum 上的帖子中看到,可以使用以下方法获取感兴趣的索引:
MatrixXi indices = (A.array() < 3).cast<int>();
我想要的是这样的:
MatrixXd B = A(A.array() < 3);
谢谢。
【问题讨论】:
-
这个问题还有效吗?还是在 Eigen 中同时开发了一些子矩阵索引的方法?
-
AFAIK,这方面没有任何改善。当然,我会很高兴被证明是错误的
-
Eigen bitbucket repo 中有些东西在深处搅动,所以我们可能会接近一个更好的解决方案。 eigen.tuxfamily.org/bz/show_bug.cgi?id=329#c27
标签: c++ vectorization eigen submatrix