Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “艾根”是什么意思;稀疏矩阵格式;示例包含错误?_C++_Eigen - Fatal编程技术网

C++ “艾根”是什么意思;稀疏矩阵格式;示例包含错误?

C++ “艾根”是什么意思;稀疏矩阵格式;示例包含错误?,c++,eigen,C++,Eigen,Egeng 3.3.7 SparceMatrix的文件 稀疏矩阵格式中似乎包含错误部分: 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, colu

Egeng 3.3.7 SparceMatrix的文件 稀疏矩阵格式中似乎包含错误部分:

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]),则前两个数组
值和
内部索引
是有意义的
OuterStart
对于
14
位置似乎都不正确,而
InnerNNZs
对于
14
位于矩阵的[4,2]元素中是有意义的,但与
数组不一致

这个例子是不正确的还是我遗漏了什么


总的来说,除了检查源代码之外,找出Eigen的最佳方法是什么?我通常会查看测试和示例,但是为稀疏矩阵构建大多数基准测试和测试会导致编译错误(这些测试是为旧版本的Eigen编写的,而不是为版本3更新的?)。

关键是用户应该根据需要为每列保留至少相同数量的条目。在本例中,用户只为第二列保留了2个条目,因此如果您试图向该列添加另一个条目,则可能需要昂贵的重新分配,或者至少需要复杂的转换来“窃取”另一列中未使用的条目。(我不知道这是如何实现的。)

粗略地看一下您链接到的文档,我没有看到任何关于移动条目的内容,就像您正在尝试的那样。我不确定Eigen是否支持这样的操作。(如果我错了,请纠正我。)我也不知道你为什么要这么做


你的最后一个问题可能太宽泛了。我不是Egen的专家,但它似乎是一个成熟、功能强大、文档丰富的库。如果您在编译示例时遇到任何具体问题,您应该将其发布在此处或特定于Eigen的论坛上。很多人都精通Eigen,而且很随和

什么让你困惑?
\uu
值是多少?这些只是空白,不使用,但允许快速插入。“值:22 7 3 5 14…”表示14位于第2列,而矩阵则位于第3列!否,
\u
空格不是列分隔符。它们是额外的空间,便于快速插入附加值。可以将其视为在每列的基础上保留比严格需要的更多的空间。