c++ eigen

c++ - Eigen y std:: vector



(1)

Eigen usa memoria contigua, al igual que std::vector . Sin embargo, el std::vector externo contiene un conjunto contiguo de std::vector<std::complex<double> > , cada uno apuntando a un conjunto diferente de números complejos (y puede tener diferentes longitudes). Por lo tanto, la "matriz" estándar no es contigua. Lo que puede hacer es copiar los datos a la matriz Eigen, hay varias formas de hacerlo. Lo más sencillo sería recorrer i y j , con una mejor opción como algo así como

Eigen::MatrixXcd mat(rows, cols); for(int i = 0; i < cols; i++) mat.col(i) = Eigen::Map<Eigen::VectorXcd> (A[i].data(), rows);

Tengo una matriz, que se da como:

std::vector<std::vector<std::complex<double>>> A;

Y quiero asignar eso a la biblioteca de álgebra lineal de Eigen así:

Eigen::Map<Eigen::MatrixXcd, Eigen::RowMajor> mat(A.data(),51,51);

Pero el código falla con

error: no matching function for call to ‘Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1>, 1>::

¿Hay alguna forma de convertir un vector de un vector para que Eigen pueda usarlo?