他們有很多鏈接去其他方式,但我無法找到從特徵::矩陣或Eigen :: VectorXd在我的具體案件。typecasting Eigen :: VectorXd爲標準::矢量
15
A
回答
19
vector<int> vec(mat.data(), mat.data() + mat.rows() * mat.cols());
30
你不能強制轉換,但你可以很容易地複製數據:
VectorXd v1;
v1 = ...;
vector<double> v2;
v2.resize(v1.size());
VectorXd::Map(&v2[0], v1.size()) = v1;
+0
heyy謝謝你的回覆..但我發現上面的答案更乾淨。 – 2014-09-29 09:34:01
+3
不錯,因爲它可以在兩種方式下工作(從和到VectorXd) – Raffi 2015-04-01 14:40:25
1
你可以從和特徵向量做到這一點:
//init a first vector
std::vector<float> v1;
v1.push_back(0.5);
v1.push_back(1.5);
v1.push_back(2.5);
v1.push_back(3.5);
//from v1 to an eignen vector
float* ptr_data = &v1[0];
Eigen::VectorXf v2 = Eigen::Map<Eigen::VectorXf, Eigen::Unaligned>(v1.data(), v1.size());
//from the eigen vector to the std vector
std::vector<float> v3(&v2[0], v2.data()+v2.cols()*v2.rows());
//to check
for(int i = 0; i < v1.size() ; i++){
std::cout << std::to_string(v1[i]) << " | " << std::to_string(v2[i]) << " | " << std::to_string(v3[i]) << std::endl;
}
相關問題
- 1. 將Eigen :: VectorXd轉換爲Eigen :: MatrixXd的C++ lambda函數
- 2. eigen:從矢量中減去標量
- 3. 使用Eigen :: VectorXd減少OpenMP OpenDMP:
- 4. 內存效率 - Eigen :: VectorXd在循環中
- 5. 將Eigen :: PermutationMatrix.indices()轉換爲數組/矢量
- 6. C++特徵指針指向Eigen :: Map <Eigen :: VectorXd>對象
- 7. 如何從Eigen中的索引矢量中提取(Eigen :: Vector的)子矢量?
- 8. 何時標準化矢量?
- 9. Can Eigen也可用於1矢量(標量)嗎?
- 10. 僅使用標準庫創建「矢量矢量」的標準操作
- 11. 遞歸貓在Eigen中的矢量
- 12. 如何連接Eigen中的矢量?
- 13. 標準矢量和增強矢量的push_back:哪個更快?
- 14. 如何從雙指針數組中創建Eigen :: VectorXd
- 15. 爲標準::矢量迭代有效性<性病::矢量<T>>
- 16. 從標準::矢量MONGO陣列
- 17. 空標準::矢量開始!=結束
- 18. C++標準模板庫矢量問題
- 19. 如何用推力標準化矢量?
- 20. Eigen :: MatrixXd typedefs的替代品
- 21. 爲標準::矢量儲備()不確定行爲
- 22. 2向量的標量乘法Eigen
- 23. Eigen中的表達式模板
- 24. Eigen - 將常量數組映射到動態矢量
- 25. Eigen ::張量雙收縮到標量值
- 26. 矢量爲矩陣座標
- 27. 類型MatrixXd&VectorXd的前向聲明?
- 28. C++:Eigen conservativeResize太貴了?
- 29. 如何正確應用矢量磁力儀的標量校準?
- 30. 如何將Eigen庫的矩陣或矢量類型轉換爲字符串?
謝謝你,它的工作。我可以知道你是如何到達解決方案的嗎? – 2014-09-29 09:31:34
'mat.rows()* mat.cols()'可以簡化爲'mat.size()',但是,請注意,這種解決方案只適用於普通的'Matrix <>'對象,而使用'Map <>'在我的答案中也適用於子矩陣。 – ggael 2014-09-29 10:58:13