在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)