Armadillo中有效的稀疏矩阵加法

时间:2017-12-02 00:36:07

标签: c++ sparse-matrix armadillo

我正在尝试构造一个表格的稀疏矩阵L. enter image description here enter image description here

LHi分别是非常稀疏的矩阵和行向量。最终的L矩阵应具有约1%的密度。

犰狳提供了arma::sp_mat课程,似乎符合我的需要。然后L的集合看起来像这样

    arma::sp_mat L(N,N);
    arma::sp_mat Hi(1,N);

    for (int i = 0; i < p; ++ i){

    // The non-zero terms in Hi are populated here

    L += Hi.t() * Hi;

    }

Hi中的非零元素数量与i不变。我对稀疏矩阵没有多少经验,但我期望L的增量汇编速度相对恒定。

然而,似乎Hi.t() * Hi添加到L的速度随着时间的推移而降低。我在组装L的方式上做错了什么?我应该通过指定我知道哪些组件不会为零来预构建L吗?

1 个答案:

答案 0 :(得分:0)

似乎L未初始化,因此当使用Hi.t() * Hi递增时,它会有效地更改大小。这可能是速度下降的原因。