在slam十四講這本書上,有一個(gè)課后習(xí)題需要找出一種方法求解AX=B。在eigen的官網(wǎng)上,搜索求解器,找到一個(gè)SPQR的方法,需要額外安裝,于是我開始了安裝SPQR的探索,終于成功求解出答案。
從編譯鏈接、到矩陣的輸入,到最后指針的輸出。這個(gè)過(guò)程真是不容易。
先說(shuō)說(shuō)編譯鏈接,主要的問(wèn)題是:undefined referenced to XXX。不討論問(wèn)題如何出現(xiàn),先說(shuō)說(shuō)正確的方法是什么。要使用SPQR的方法,需要在CMakeList.txt做三類動(dòng)作:
1、添加SPQR及依賴庫(kù)的頭文件的Include路徑include_directories.
2、添加SPQR及依賴庫(kù)的庫(kù)文件LIB路徑lind_directories.
3、鏈接項(xiàng)目可執(zhí)行文件與依賴庫(kù)的,靜態(tài)庫(kù)或者共享庫(kù)。target_link_library()
在這個(gè)過(guò)程中l(wèi)inux的技術(shù)get一些,比如ln命令。find / -name "regex"。 dpkg -i ; dpkg -L.
第二部分又遇到一矩陣輸入的問(wèn)題,F(xiàn)ILE*是一個(gè)文件指針,需要指向一個(gè).mm文件,這個(gè)文件是Matrix Market文件格式,可以直接搜索查看。
最后我想調(diào)出求解的值,遇到viod *x;無(wú)法取值的情況,這個(gè)時(shí)候可以使用類型轉(zhuǎn)換,double *pt; pt = (double*) x;可以進(jìn)行取值。
關(guān)于suitespace網(wǎng)址有一個(gè)大學(xué)的教授很厲害的樣子,
https://people.engr.tamu.edu/davis/suitesparse.html
pkgs.com
? ??