如何将特征块深度复制到向量中?

how to deep copy eigen block into a vector?

我加载了一个特征矩阵 A(5,12),我想分配一个新的特征向量作为矩阵 A 第一行的前 7 个值。 不知何故,它不起作用...

后来我才知道块returns是一个指向原始数据的指针。如何将block深拷贝到Eigen Vector中?

Eigen::MatrixXd A(5,12);
Eigen::VectorXd B(12); B = A.row(0);
Eigen::VectorXd C(7); C = B.head(7);

blockcolrowhead等方法。return查看原始数据,但运算符= 总是执行深拷贝,所以你可以简单地写:

VectorXd C = A.row(0).head(7);

这将执行一次深拷贝。使用 Eigen 3.4 slicing API,您还可以编写:

VectorXd C = A(0,seqN(0,7));