Search code examples
c++vectorizationeigensubmatrix

Submatrices and indices using Eigen


I'm currently working on a MATLAB project and I'd like to re-implement the most computational-heavy parts using C++ and Eigen. I'd like to know if there's a way to perform the following operation (MATLAB syntax):

B = A(A < 3);

For those who are not familiar with MATLAB, the above-mentioned command initializes a matrix B made of the cells in A whose values are less than 3.

I've seen from a post on the Eigen forum that it's possible to obtain the indices of interest by using:

MatrixXi indices = (A.array() < 3).cast<int>();

What I'd like to have is something like:

MatrixXd B = A(A.array() < 3);

Thanks.


Solution

  • There currently is a feature request for selecting sub-matrices by indexing filed at the Eigen BugTracker system. Therefore, I doubt it will be possible that way.

    The only workaround I could think of is to copy the data manually. Not very nice though.