initialize c++ eigen

c++ - initialize - mecanografiando Eigen:: VectorXd a std:: vector



matrix eigen c++ (3)

Hay muchos enlaces para ir al revés, pero no puedo encontrar para obtener un std :: vector de un Eigen :: Matrix o Eigen :: VectorXd en mi caso específico.


No se puede encasillar, pero puede copiar fácilmente los datos:

VectorXd v1; v1 = ...; vector<double> v2; v2.resize(v1.size()); VectorXd::Map(&v2[0], v1.size()) = v1;


Puedes hacer esto desde y hacia el vector Eigen:

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


vector<int> vec(mat.data(), mat.data() + mat.rows() * mat.cols());