在 Eigen 中乘以对角矩阵(以向量形式提供)

Multiplying by diagnonal matrix (provided as vector) in Eigen

给定一个矩阵 A 和一个表示对角矩阵 D 的对角线的向量 d,什么是最好的(即最简单而不影响性能)D*[= 的特征表达式10=] 只有 dA?

构造D(作为密集矩阵)并执行D*A似乎效率低下,因为它会涉及不必要的零乘法。 A 的行只需要按 d.

的相应元素进行缩放

我应该转换为数组并缩放行,还是 Eigen 提供对角矩阵的构造和相乘以避免不必要的开销?

您可以使用 Eigen::DiagonalMatrix 作为 suggested. Alternatively, if you're already given an Eigen::Vector (or Map), you can use d.asDiagonal(),如下所示:

Eigen::VectorXf d;
Eigen::MatrixXf a, b;
b = d.asDiagonal() * a;