在slam十四讲这本书上,有一个课后习题需要找出一种方法求解AX=B。在eigen的官网上,搜索求解器,找到一个SPQR的方法,需要额外安装,于是我开始了安装SPQR的探索,终于成功求解出答案。
从编译链接、到矩阵的输入,到最后指针的输出。这个过程真是不容易。
先说说编译链接,主要的问题是:undefined referenced to XXX。不讨论问题如何出现,先说说正确的方法是什么。要使用SPQR的方法,需要在CMakeList.txt做三类动作:
1、添加SPQR及依赖库的头文件的Include路径include_directories.
2、添加SPQR及依赖库的库文件LIB路径lind_directories.
3、链接项目可执行文件与依赖库的,静态库或者共享库。target_link_library()
在这个过程中linux的技术get一些,比如ln命令。find / -name "regex"。 dpkg -i ; dpkg -L.
第二部分又遇到一矩阵输入的问题,FILE*是一个文件指针,需要指向一个.mm文件,这个文件是Matrix Market文件格式,可以直接搜索查看。
最后我想调出求解的值,遇到viod *x;无法取值的情况,这个时候可以使用类型转换,double *pt; pt = (double*) x;可以进行取值。
关于suitespace网址有一个大学的教授很厉害的样子,
https://people.engr.tamu.edu/davis/suitesparse.html
pkgs.com