在 MATLAB 中,下面的行将矩阵转换为向量。它将矩阵逐列展平为一个向量。
myvar(:)
我如何使用 Eigen 做到这一点?该解决方案应该适用于矩阵的任何维度。
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
最佳答案
Eigen 矩阵默认按列主顺序存储,因此您可以简单地使用 Eigen Maps 将数据逐列存储在数组中:
MatrixXd A(3,2);
A << 1,2,3,4,5,6;
VectorXd B(Map<VectorXd>(A.data(), A.cols()*A.rows()));
如果要数据逐行排序,需要先对矩阵进行转置:
MatrixXd A(3,2);
A << 1,2,3,4,5,6;
A.transposeInPlace();
VectorXd B(Map<VectorXd>(A.data(), A.cols()*A.rows()));
关于matlab - 特征值将矩阵转换为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22881768/