[英]Eigen - divide each (sparse) matrix row by its corresponding diagonal element
在C ++中使用特征庫,給定稀疏矩陣A
,計算稀疏矩陣B
的最有效方式(行方式操作?如何?),使得B(i, j) = A(i, j) / A(i, i)
? 即,將每行i
除以對應的對角線元素A(i, i)
。 知道如何在原地(替換A
條目)和不合適(創建新的稀疏矩陣B
)這樣做會很有幫助。
我的稀疏矩陣定義為:
typedef double Real;
typedef Eigen::SparseMatrix<Real> SparseMatrixR;
謝謝,
米
換句話說,您想要提取A的對角線,將其視為對角矩陣,並將其反轉應用於A:
A = A.diagonal().asDiagonal().inverse() * A;
如果A是rowmajor,則此操作應該稍微更有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.