Does anyone know a good way how i can extract blocks from an Eigen::VectorXf that can be interpreted as a specific Eigen::MatrixXf without copying data? (the vector should contains several flatten matrices)
e.g. something like that (pseudocode):
VectorXd W = VectorXd::Zero(8);
// Use data from W and create a matrix view from first four elements
Block<2,2> A = W.blockFromIndex(0, 2, 2);
// Use data from W and create a matrix view from last four elements
Block<2,2> B = W.blockFromIndex(4, 2, 2);
// Should also change data in W
A(0,0) = 1.0
B(0,0) = 1.0
The purpose is simple to have several representations that point to the same data in memory.
This can be done e.g. in python/numpy by extracting submatrix views and reshape them.
A = numpy.reshape(W[0:0 + 2 * 2], (2,2))
I Don't know whether Eigen supports reshape methods for Eigen::Block.
I guess, Eigen::Map is very similar except it expects plain c-arrays / raw memory. (Link: Eigen::Map).
Chris