c++ - 将特征矩阵转换为 std::vector<std::array<>> 形式

标签 c++ arrays matrix vector eigen

如何将特征矩阵转换为 std::vector<std::array<>>形式?假设我有一个特征矩阵 Eigen::MatrixXd A(4,3) .是否可以在 std::vector<std::array<double,3>> 中转换矩阵 A形式?

最佳答案

你可以映射一个std::vector<std::array<double,3>>的内存使用 Eigen::Map 到可写的 Eigen 类型,例如,

// typedef for brevity, if you need this more often: 
typedef Eigen::Matrix<double, 4, 3, Eigen::RowMajor> Mat43dR;

std::vector<std::array<double,3>> raw_data;
raw_data.resize(4); // allocate memory for 4x3 entries
// Copy A to raw_data:
Mat43dR::Map(raw_data[0].data() ) = A;

您还可以阅读 raw_data使用 Eigen::Map , 当然。还有一些替代方法可以使用 Eigen::Map : https://eigen.tuxfamily.org/dox/group__TutorialMapClass.html

附录:如果你不知道A的大小在编译时,您可以使用 Dynamic尺寸如下:

typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> MatXXdR;
std::vector<std::array<double,3>> raw_data; // the `3` must still be known at compile-time
assert(A.cols()==3);
raw_data.resize(A.rows()); // allocate memory for Nx3 entries
// Copy A to raw_data:
MatXXdR::Map(raw_data[0].data(), A.rows(), A.cols() ) = A;

关于c++ - 将特征矩阵转换为 std::vector<std::array<>> 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55312763/

相关文章:

javascript - 从嵌套 JSON 构建键值数组

matrix - 相似度矩阵的有效聚类

matlab - 通过为每一列向下滑动一个给定的向量来创建一个矩阵

C++ 在 Matrix 类中重载 << 运算符

c++ - 带有 GLFW 和 GLEW 的 OpenGL - 在 Windows 上使用 gcc 进行编译

arrays - 如何在swift中将字典追加到数组中

javascript - 在 React 中使用 map 返回一个等于最后一个元素的数组

c++ - boost 池最大大小

c++ - 静态断言基指针 "equals"是派生指针

c++ - NMAKE : fatal error U1052: file 'Makefile.vc' not found