c++ 特征矩阵Xi到向量Xi的转换

unhi4e5o  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(226)

我有一个矩阵Xi,比如说

[0, 1, 2]
 [0, 2, 3]
 [4, 7, 6]
 [4, 6, 5]
 [0, 4, 5]
 [0, 5, 1]
 [1, 5, 6]

我通过以下方式获得其中的一部分:

MatrixXi MR = F.middleRows(first, last);

第一个和最后一个都是任意的。现在我想把这n行变成一个列向量Xi,就像:

[0, 
    1, 
    2,
    0, 
    2, 
    3]

可能不用for循环。我试过了:

VectorXi VRT(MR.rows() * MR.cols());
VRT.tail(MR.rows() * MR.cols()) = MR.array();

但我得到:

Assertion failed: (rows == this->rows() && cols == this->cols() && "DenseBase::resize() does not actually allow to resize."), function resize, file /Users/max/Developer/Stage/Workspace/AutoTools3D/dep/libigl/external/eigen/Eigen/src/Core/DenseBase.h, line 257.

我该怎么做呢?我使用的是v4之前的Eigen,所以我不能使用reforme ...谢谢

9vw9lbht

9vw9lbht1#

正如chtz所指出的,这是可行的:

Eigen::VectorXi VR(MR.size());
Eigen::MatrixXi::Map(VR.data(), MR.cols(), MR.rows()) =
      MR.transpose();

相关问题