簡體   English   中英

本征“稀疏矩陣格式”示例是否包含錯誤?

[英]Does Eigen “Sparse matrix format” example contains error?

SparceMatrix的Eigen 3.3.7文檔http://eigen.tuxfamily.org/dox/group__TutorialSparse.html似乎在“ 稀疏矩陣格式”部分中包含錯誤:

This storage scheme is better explained on an example. The following matrix

0   3   0   0   0
22  0   0   0   17
7   5   0   1   0
0   0   0   0   0
0   0   14  0   8

and one of its possible sparse, column major representation:

Values:         22  7   _   3   5   14  _   _   1   _   17  8
InnerIndices:   1   2   _   0   2   4   _   _   2   _   1   4
OuterStarts:    0   3   5   8   10  12
InnerNNZs:      2   2   1   1   2   

如果將14從第三列移到第二列(即其索引從[4,2]更改為[4,1]),則前兩個數組ValuesInnerIndices意義。 OuterStarts似乎並不對任一正確14的位置,而InnerNNZs有意義14在矩陣的[4,2]元件上時,但是不一致Values數組。

這個例子不正確還是我錯過了什么?

通常,除了檢查源代碼之外,找出Eigen的最佳方法是什么? 我通常查看測試和示例,但是為稀疏矩陣構建大多數基准和測試會導致編譯錯誤(這些測試是針對較早版本的Eigen編寫的,而不是針對版本3進行的更新嗎?)...

關鍵是用戶應該在每列中保留至少所需數量的條目。 在此示例中,用戶僅為第二列保留2個條目,因此,如果您嘗試向該列添加另一個條目,則可能需要昂貴的重新分配,或者至少需要進行復雜的轉換才能“竊取”未使用的條目。另一列。 (我不知道這是如何實現的。)

粗略瀏覽您鏈接到的文檔后,我沒有看到關於移動條目的任何信息。 我不確定Eigen是否支持這種操作。 (如果我錯了,請糾正我。)我也不確定為什么要這么做。

您的最后一個問題可能太廣泛了。 我不是Eigen的專家,但它似乎是一個成熟,強大且有據可查的庫。 如果在編譯示例時遇到任何特定問題,則應在此處或在Eigen特定論壇上發布它們。 scicomp.SE的許多人都精通Eigen並能適應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM