【问题标题】:Multiplying by diagnonal matrix (provided as vector) in Eigen在 Eigen 中乘以对角矩阵(作为向量提供)
【发布时间】:2020-01-21 06:29:06
【问题描述】:

给定一个矩阵A 和一个向量d,它表示对角矩阵 D 的对角线,对于 D*A 而言,最好的(即不影响性能的最简单的)特征表达式是 @ 987654324@和A?

构造D(作为密集矩阵)并执行D*A 似乎效率低下,因为它会涉及不必要的零乘法。 A 的行只需要通过d 的对应元素进行缩放即可。

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

【问题讨论】:

  • 有一个Eigen::DiagonalMatrix 类型。我想它应该符合你的需要

标签: eigen


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多