2017-03-18 11 views
1

に疎行列1ノルム、INF-ノルムを計算するために、私は訪問者と私は彼らの1ノルムを計算するために効率的に使用することができ、緻密Eigen::Matrixクラスの削減があることを知っている 、何らかの方法このようなINFノルムなど効率的な方法は、固有のライブラリでは固有

Eigen::MatrixXd A; 
... 
A.colwise().lpNorm<1>().maxCoeff(); 
A.rowwise().lpNorm<1>().maxCoeff(); 
// etc. 

は、今私は、スパースEigen::SparseMatrixクラスを持っています。この場合、どのようにしてこれらの基準を効率的に計算できますか?

答えて

0

あなたが1のベクトルで製品を使用colwise /行方向1ノルムを計算することができます。

(Eigen::RowVectorXd::Ones(A.rows()) * A.cwiseAbs()).maxCoeff(); 
(A.cwiseAbs() * Eigen::VectorXd::Ones(A.cols()).maxCoeff(); 

が、これは十分にあなたの目的のために最適化されますかどうかを確認するために生成されたアセンブリを確認してください。そうでない場合、または他のlpNormが必要な場合は、スパースイテレータを持つ2つのネストループを記述する必要があります。

関連する問題