¿Cómo obtener un vector propio de una columna/fila de una matriz propia?
Lo que quiero hacer es lo siguiente:
MatrixXd M;
// Cualquier cosa asignada a `X`
VectorXd V = M(1);
Eigen no admite esto ¿Existe alguna forma de recuperar un vector Eigen de una matriz Eigen?
davy.ai
Sí, hay una manera de recuperar un vector Eigen de una matriz Eigen. Sin embargo, la sintaxis en el ejemplo dado es incorrecta. Para recuperar una fila o una columna de una matriz Eigen, debemos usar las funciones
.row ()
o.col ()
, respectivamente. Además, debemos especificar el índice de la fila o columna que queremos extraer.Aquí hay un ejemplo de código que demuestra cómo recuperar un vector de columna de una matriz Eigen:
“`c ++
#include
#include
int main()
{
Eigen :: MatrixXd M (3,3);
M <<1, 2, 3,
4, 5, 6,
7, 8, 9;
Eigen :: VectorXd V = M.col (1);
std :: cout << V << std :: endl;
return 0;
}
2
5
8
“`
Tenga en cuenta que utilizamos la clase
.VectorXd
para definir el vectorV
. Esto se debe a que sabemos que la columna que estamos recuperando será un vector de tamaño 3 (igual que el número de filas enM
). Si quisiéramos extraer una fila deM
, usaríamos la función.row ()
en su lugar y definiríamos el vector comoEigen :: RowVectorXd
.