Armadillo c++:有没有一种特定的方法可以有效地创建三角形或对称矩阵



我使用armadillo主要用于对称矩阵和三角形矩阵。我想在内存存储方面提高效率。然而,似乎没有其他方法,只能创建一个新的垫子,并在矩阵的下/上部分填充零(对于三角形)或重复(对于对称)。

有没有一种更有效的方法可以使用Armadillo使用三角形/对称矩阵?

谢谢,Antoine

Armadillo中没有对三角形或带状矩阵的特定支持。然而,从3.4版本开始,对稀疏矩阵的支持逐渐增加。根据您需要的Armadillo函数以及矩阵的稀疏性,您可能会从使用实现压缩稀疏列(CSC)格式的SpMat<type>中获益。对于矩阵中的每个非零值,CSC格式会将行索引与值一起存储,因此可能不会为三角矩阵节省太多内存。然而,带状对角矩阵应该消耗显著更少的内存。

symmatu()/symmatl()和trimat()/trimat()可能就是你想要的:

http://arma.sourceforge.net/docs.html

相关内容

最新更新