Eigen學習筆記(11)-存儲順序

原文:Eigen官網-Storage orders

對於矩陣和二維數組,有兩種存儲順序:列優先和行優先。

1. 行優先和列優先的存儲

矩陣的項構成一個二維網格。然而,當矩陣存儲在內存中時,條目必須以某種方式線性排列。有兩種主要的方法,按行和按列。

假設矩陣:
A = 8,2,2,9
9,1,4,4
3,5,4,5
row-major order:按一行一行地進行存儲,首先存儲第一行,然後存儲第二行,如此進行,
8 2 2 9 9 1 4 4 3 5 4 5
column-major order:按一列一列地進行存儲,首先存儲第一列,然後存儲第二列,如此進行,
8 9 3 2 1 5 2 4 4 9 4 5

2. Eigen中的存儲順序

Matrix類有六個模板參數,其中Options參數設置爲RowMajor則按行優先順序進行存儲,如果設置爲ColMajor則按列優先順序進行存儲。

Eigen中的默認存儲順序是column-major。

如果矩陣或數組使用了某類存儲順序,也可硬將其分配給使用了另一類存儲順序的矩陣和數組,Eigen將會自動進行重新排序。

3. 存儲順序的選擇

對於存儲順序的選擇,沒有一個簡單的答案,這依賴於你的應用:

  • 如果要和其他庫合作開發,爲了轉化方便,可以選擇同樣的存儲方式。
  • 應用中涉及大量行遍歷操作,應該選擇行優先,尋址更快。反之亦然。
  • Eigen中默認是列優先,而且大多庫都是按照這個順序的,默認的不失爲較好的。

參考:

“Eigen教程(11)”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章