在C ++中使用特征库,给定稀疏矩阵A
,计算稀疏矩阵B
的最有效方法(行方式操作?如何?)是这样的{{ 1}}?也就是说,将每行B(i, j) = A(i, j) / A(i, i)
除以对应的对角元素i
。
了解如何在原地(替换A(i, i)
中的条目)和不合适(创建新的稀疏矩阵A
)这样做会很有帮助。
我的稀疏矩阵定义为:
B
谢谢你,
米。
答案 0 :(得分:3)
换句话说,你想要提取A的对角线,将其视为对角矩阵,并将其反转应用于A:
A = A.diagonal().asDiagonal().inverse() * A;
如果A是rowmajor,则此操作应该稍微更有效。