Có nhiều liên kết để đi theo chiều ngược lại nhưng tôi không thể tìm thấy để có được một std :: vector từ một Eigen :: Matrix hoặc Eigen :: VectorXd trong cụ thể của tôi trường hợp.typecasting Eigen :: VectorXd thành std :: vector
15
A
Trả lời
19
vector<int> vec(mat.data(), mat.data() + mat.rows() * mat.cols());
30
Bạn không thể định kiểu, nhưng bạn có thể dễ dàng sao chép dữ liệu:
VectorXd v1;
v1 = ...;
vector<double> v2;
v2.resize(v1.size());
VectorXd::Map(&v2[0], v1.size()) = v1;
+0
heyy thankyou trả lời .. nhưng tôi thấy câu trả lời ở trên sạch hơn. –
+3
tốt đẹp vì nó hoạt động trên cả hai cách (từ và đến VectorXd) – Raffi
1
Bạn có thể làm điều này từ và đến Eigen vector:
//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;
}
Các vấn đề liên quan
- 1. Eigen và std :: vector
- 2. Khởi tạo Eigen :: vectơ với std :: vector
- 3. Làm thế nào để trích xuất một subvector (của một Eigen :: Vector) từ một vector của các chỉ số trong Eigen?
- 4. Chuyển đổi std :: mảng thành std :: vector
- 5. Làm thế nào để chuyển đổi hàng vectơ thành vector cột trong Eigen?
- 6. Các mẫu biểu thức trong Eigen
- 7. Chuyển đổi std :: string thành std :: vector <char>
- 8. convert System :: array thành std :: vector
- 9. chuyển đổi std: vector thành NSArray
- 10. C++ Chuyển đổi std :: tuple <A, A, A...> thành std :: vector hoặc std :: deque
- 11. posix_memalign cho std :: vector
- 12. Lặp Nhiều std :: vector
- 13. sizeof() std :: vector (C++)
- 14. std :: vector iterator invalidation
- 15. std :: vector insert() reallocation
- 16. std :: vector :: emplace_back và std :: di chuyển
- 17. std :: vector và std :: hành vi phút
- 18. std :: list vs std :: vector iteration
- 19. Thay thế 'std :: vector` với `std :: array`
- 20. cách nhanh để triển khai pop_front thành std :: vector
- 21. Sao chép một mảng thành một std :: vector
- 22. làm thế nào để ghép vectơ trong Eigen?
- 23. Chuyển đổi std :: vector <std :: vector <double>> đại diện cho mảng 2D thành cv :: Mat
- 24. Tại sao memcpy không sao chép dữ liệu ma trận Eigen, nhưng std :: copy thành công?
- 25. vector của std :: Các luồng
- 26. Sự khác nhau giữa tăng :: container :: vector và std :: vector
- 27. Là std :: vector hoặc boost :: vector thread safe?
- 28. Tại sao std :: vector :: operator [] 5 đến 10 lần nhanh hơn std :: vector :: at()?
- 29. MySQL: Typecasting NULL 0
- 30. Bản sao nhanh của `std :: vector <std :: uint8_t>`
Cảm ơn bạn nó làm việc. Tôi có thể biết làm thế nào bạn đến giải pháp? –
'mat.rows() * mat.cols()' có thể được đơn giản hóa thành 'mat.size()', tuy nhiên, hãy lưu ý rằng giải pháp này chỉ làm việc cho một đối tượng 'Matrix <>' đơn giản, trong khi sử dụng một 'Map <> 'như trong câu trả lời của tôi làm việc cho ma trận phụ quá. – ggael