Диагональная часть матрицы и кусочный квадрат/умножение в Eigen (C++)

Пусть A — вещественная матрица размера nxn. Я хотел бы получить диагональную часть A и назначить ее вектору Eigen::VectorXd. Ниже я хотел бы взять диагональную часть A и присвоить ее вектору d:

Eigen::MatrixXd A(n,n);
A.setRandom();

Eigen::VectorXd d(n);
d.setZero();

Предоставляет ли Eigen какой-либо метод для вышеуказанной операции или мне нужно реализовать их вручную? Это, конечно, очень просто, но я хотел бы, чтобы это работало как можно быстрее.


person nullgeppetto    schedule 19.12.2015    source источник


Ответы (1)


Из этого раздела документации вы можете получить диагональ с помощью

vec1 = mat1.diagonal();

В документах также упоминается версия const, поэтому вы можете сделать вывод, что ее также можно использовать как доступ для чтения и записи.

person villasv    schedule 19.12.2015