首页 > 解决方案 > 在 Eigen 中乘以诊断矩阵(作为向量提供)

问题描述

给定一个矩阵A和一个d表示对角矩阵 D 的对角线的向量,A仅根据dA

构造D(作为密集矩阵)和做D*A似乎效率低下,因为它会涉及不必要的零乘法。的行A只需按 的相应元素进行缩放d

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

标签: eigen

解决方案


Eigen::DiagonalMatrix正如Damien建议的那样,您可以使用。或者,如果您已经获得了Eigen::Vector(或Map),您可以使用d.asDiagonal()如下:

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

推荐阅读