繁体   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