如何更新Armadillo中稀疏矩阵的值

时间:2015-07-07 13:25:48

标签: sparse-matrix armadillo

我正在解决一个流体问题,其中形成了非常大的稀疏矩阵。在Armadillo Sparse Matrix的上下文中,我有一个固定的umat locations矩阵存储索引和一个变量vec values的每个位置。在迭代开始之前,我已经使用Armadillo创建了一个稀疏矩阵作为sp_mat A(locations, values)。在每次迭代中,我需要求解不同的valueslocations保持不变,我希望A中的更新值。

我有什么方法可以更新values中的A,用batch insertion替换旧的,或者犰狳提供的任何类似方法?如果不是,那么在Speed的上下文中,最好的方法是什么呢?

元素访问,A(i,j)是可能的,但由于它的大小,它会减慢进程。批量插入似乎更快且易于管理。

非常感谢!

1 个答案:

答案 0 :(得分:0)

使用C ++ 11 / C ++ 14,您可以将batch insertion constructorsstd::move()结合使用。例如:

sp_mat X;

X = std::move( sp_mat(locations, values) );

要在 gcc clang 中启用C ++ 11模式,请使用-std=c++11选项进行编译。