matlab - 特征值将矩阵转换为向量

标签 matlab eigen

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

相关文章:

matlab - 这个橙色点在 ROC 图中代表什么?

c++ - 使用 Eigen 计算 Cholesky 分解

c++ - 由于固定大小的成员而导致的 Eigen 运行时断言

c - Matlab 生成的 C 代码无法正常工作

matlab - 如何使用句柄在 MATLAB 中绘制多条曲线

Matlab:fminsearch 返回的估计值不正确

arrays - 将数组合并为一个字符串(matlab)

c++ - Eigen::aligned_allocator 因 std::unordered_multimap 而失败

c++ - 将特征库中的 VectorXi 传递给类方法

android - 如何解决错误:在此范围内未声明 'vreinterpretq_u32_f64'-在Android上使用Eigen构建