特征转换矩阵到向量

use*_*255 8 matlab eigen

MATLAB中,下面的行将Matrix转换为Vector.It将矩阵列逐列展平为矢量.

myvar(:)
Run Code Online (Sandbox Code Playgroud)

我如何用Eigen做到这一点?该解决方案适用于Matrix的任何维度.

MatrixXd A(3,2);
VectorXd B(6);
A << 1,2,3,4,5,6;
B << A.col(0), A.col(1); 
//This isn't general enough to work on any size Matrix
Run Code Online (Sandbox Code Playgroud)

Ben*_*ner 13

默认情况下,特征矩阵以列主要顺序存储,因此您可以使用Eigen Maps在数组中逐列存储数据:

MatrixXd A(3,2);
A << 1,2,3,4,5,6;
VectorXd B(Map<VectorXd>(A.data(), A.cols()*A.rows()));
Run Code Online (Sandbox Code Playgroud)

如果您希望逐行排序数据,则需要首先转置矩阵:

MatrixXd A(3,2);
A << 1,2,3,4,5,6;
A.transposeInPlace();
VectorXd B(Map<VectorXd>(A.data(), A.cols()*A.rows()));
Run Code Online (Sandbox Code Playgroud)