有谁知道如何从 Eigen::VectorXf 中提取可以解释为特定 Eigen::MatrixXf 而不复制数据的块的好方法?(向量应该包含几个扁平矩阵)
例如类似的东西(伪代码):
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
目的很简单,就是让多个表示指向内存中的相同数据。
这可以通过提取子矩阵视图并重塑它们来完成,例如在 python/numpy 中。
A = numpy.reshape(W[0:0 + 2 * 2], (2,2))
我不知道 Eigen 是否支持 Eigen::Block 的 reshape 方法。
我猜,Eigen::Map 非常相似,只是它需要普通的 c 数组/原始内存。(链接:Eigen::Map)。
克里斯