Eigen (C++) 中矩阵的对角线部分和分段 square/multiplication

Diagonal part of matrix and piece-wise square/multiplication in Eigen (C++)

设A为nxn实数矩阵。我想获取 A 的对角线部分并将其分配给 Eigen::VectorXd 向量。下面,我想取 A 的对角线部分并将其分配给向量 d:

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

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

Eigen是否提供了上述操作的一些方法,还是需要我手动实现?这当然很简单,但我希望它尽快运行。

从文档的 this section 中,您可以简单地使用

检索对角线

vec1 = mat1.diagonal();

文档还提到了一个 const 版本,所以你可以推断这也可以用作读写访问。