G2o c++库逻辑理解困难

g2o c++ library difficulty in understanding the logic

本文关键字:c++ G2o      更新时间:2023-10-16

我是c语言的学生和初学者。我需要优化

文件中使用的随机分解。https://github.com/RainerKuemmerle/g2o/blob/master/g2o/solvers/csparse/csparse_helper.cpp

为ARM使用向量化和使用Ne10库。

但是我很难理解函数cs_chol_workspace的逻辑。函数返回一个指针变量N,它在函数内部没有任何改变。即使我知道变量L代表分解矩阵,那么Lx Li和Lp是什么呢?逻辑远比我的理解水平复杂得多。

在过去的几天里,我一直在努力理解代码。任何帮助将是非常值得赞赏的,因为我接近我的最后期限,仍然没有运气。

函数返回一个指针变量N,该变量在函数内部没有发生任何变化。

不是真的。为csn分配内存,并在第96行将其地址分配给N

即使我知道变量L代表分解矩阵,什么是Lx,Li和Lp ?

理解这一点的重要部分是我们如何存储矩阵。存储矩阵的标准方法是通过分配足够的内存来存储所有m * n条目,并作为L_non_sparse[i][p]访问它们。在这种情况下,数据结构被设计为保存稀疏矩阵:即大多数条目为0。所以,我们只需要跟踪非零元素的位置。在第107行中,LxLiLp被定义为Lxip组件。因此,我们通过L_non_sparse[ Li[j] ][ Lp[j] ] = Lx[j]访问L_non_sparse的非零项。

这是基于cs.h

中的定义