特征 - 将每个(稀疏)矩阵行除以其对应的对角元素

时间:2014-05-28 12:07:54

标签: c++ matrix eigen sparse-matrix

在C ++中使用特征库,给定稀疏矩阵A,计算稀疏矩阵B的最有效方法(行方式操作?如何?)是这样的{{ 1}}?也就是说,将每行B(i, j) = A(i, j) / A(i, i)除以对应的对角元素i。 了解如何在原地(替换A(i, i)中的条目)和不合适(创建新的稀疏矩阵A)这样做会很有帮助。

我的稀疏矩阵定义为:

B

谢谢你,
米。

1 个答案:

答案 0 :(得分:3)

换句话说,你想要提取A的对角线,将其视为对角矩阵,并将其反转应用于A:

A = A.diagonal().asDiagonal().inverse() * A;

如果A是rowmajor,则此操作应该稍微更有效。