【问题标题】:How to Update values of a sparse matrix in Armadillo如何在犰狳中更新稀疏矩阵的值
【发布时间】:2015-07-07 13:25:48
【问题描述】:

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

有什么方法可以更新A 中的values,用batch insertion 替换旧的,或者Arm​​adillo 中提供的任何类似方法?如果不是,那么在 Speed 的背景下,最好的方法是什么?

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

非常感谢!

【问题讨论】:

    标签: sparse-matrix armadillo


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2015-08-08
      相关资源
      最近更新 更多