Eigen的map函式使用

2021-09-11 01:46:59 字數 545 閱讀 8413

經常會處理其他資料結構和eigen的轉換,比如把opencv的mat轉為eigen的matrix,或者std::vector的填入matrix。在不進行拷貝的情況下可以使用eigen的map功能進行記憶體對映。

不過一定注意對映後的記憶體不要被原結構釋放了

直接上例子

int array[9];

eigen::mapmat(array,3,3);

雖然mat的型別是eigen::map, 但完全可以當作matrix來用。如果<>裡面的結構是動態的,需要在()指明shape

eigen::map就當作普通的模板函式用就行,括號裡面是實際資料存放的記憶體的指標,<>裡面是要包裝成的結構,不只是matrix,連quaternion都行。

在高階的一些的化,括號裡面可以設定第三個引數:innerstride這樣就會跳著n對映,但注意這樣eigen裡面的資料就是連續存放的了。

另外使用cv2eigen(cv::mat, eigen::matrix);也可以在opencv和eigen之間轉換。注意這個函式仍然只是個記憶體對映。所以需要自己保證cv和eigen的型別一致。

Eigen的使用總結3 Map類

eigen預設採用列主導 column major 的資料儲存形式,這點和fortran還有matlab是一樣的,當然也可以選擇採用行主導,但是我感覺真心沒必要。我一開始比較關心的是eigen是否定義了比較方便的額slicing操作。但是似乎eigen的slicing和我理解的不太一樣,有點複雜。e...

eigen 的簡單使用

eigen的基本函式 eigen是可以用來進行線性代數 矩陣 向量操作等運算的c 庫,它裡面包含了很多演算法。它的license是mpl2。它支援多平台。eigen採用原始碼的方式提供給使用者使用,在使用時只需要包含eigen的標頭檔案即可進行使用。之所以採用這種方式,是因為eigen採用模板方式實...

map函式的使用技巧

js的array陣列物件中有很多有用的方法,js的map函式在某些方面非常的方便強大。map 方法建立乙個新陣列,其結果是該陣列中的每個元素都呼叫乙個提供的函式後返回的結果。let numbers 1,5,10,15 let roots numbers.map x let roots numbers...