簡體   English   中英

將特征矩陣轉換為std :: vector <std::array<> &gt;表格

[英]convert eigen matrix into std::vector<std::array<>> form

如何將本征矩陣轉換為std::vector<std::array<>>形式? 假設我有一個特征矩陣Eigen::MatrixXd A(4,3) 是否可以轉換std::vector<std::array<double,3>>形式的矩陣A?

您可以使用Eigen::Mapstd::vector<std::array<double,3>>的內存映射到可寫的本征類型,例如,

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

當然,您也可以使用Eigen::Mapraw_data讀取。 還有其他一些使用Eigen::Maphttps : //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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM