【发布时间】:2016-11-04 15:24:44
【问题描述】:
我不使用任何矩阵库,而是将普通的 std::vector 用于我的矩阵数据。
要使用 2D 数据填充它,我使用以下代码:
data[iy + dataPointsY * ix] = value;
我想知道这是正确的还是必须是其他方式(首先是 ix)。 据我了解,fftw 需要“行主要格式”。由于我使用它,所以公式应该根据行主格式。
【问题讨论】:
-
关键是,您存储数据的方式应该与您检索的方式完全相同。
-
当然,但我知道其他库依赖 row.major 格式。既然我用它,我应该按照它来排序数据。
-
如果您尝试将二维索引编码为其他库所期望的线性格式,那么您必须完全遵循该库指定的格式。就像 MPI 函数要求矩阵的所有数据元素在内存中应该是相邻的。
-
另外,如果您按列遍历矩阵(即单列从上到下),那么您应该考虑以列主要格式存储它,因为在这种情况下元素会相邻,允许在较小的页面错误中遍历大型数据集。
-
问题不在于这种格式是否“正确”。问题是 fftw 库期望什么格式。