[英]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]),则前两个数组Values
和InnerIndices
意义。 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.