如何在犰狳中更新稀疏矩阵的值
Posted
技术标签:
【中文标题】如何在犰狳中更新稀疏矩阵的值【英文标题】: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)
。在每次迭代中,我需要解决不同的values
,locations
保持不变,我希望更新A
中的值。
有什么方法可以更新A
中的values
,用batch insertion
替换旧的,或者Armadillo 中提供的任何类似方法?如果不是,那么在 Speed 的背景下,最好的方法是什么?
元素访问,A(i,j)
,是可能的,但由于尺寸很大,它会减慢进程。批量插入似乎更快且易于管理。
非常感谢!
【问题讨论】:
【参考方案1】:使用 C++11 / C++14,您可以将batch insertion constructors 与std::move() 结合使用。例如:
sp_mat X;
X = std::move( sp_mat(locations, values) );
要在 gcc 或 clang 中启用 C++11 模式,请使用 -std=c++11
选项进行编译。
【讨论】:
以上是关于如何在犰狳中更新稀疏矩阵的值的主要内容,如果未能解决你的问题,请参考以下文章
犰狳中是不是有类似稀疏立方体的东西,或者使用稀疏矩阵作为立方体中的切片的某种方式?