我不使用任何矩阵库,而是使用plain std :: vector作为我的矩阵数据。
要用2D数据填充,我使用以下代码:
data[iy + dataPointsY * ix] = value;
我想知道这是正确的还是必须是另一种方式(首先是ix)。 据我所知,fftw需要' Row-major Format'。由于我使用它,公式应该按行主格式。
答案 0 :(得分:3)
假设你想要fftw
的行主格式,你想要的是:
data[ix + iy*dataPointsY]
行 -major的点是,当组合索引增加1时,相应的行索引将是相同的(假设没有溢出到下一行)。
double m[4][4];
mp = (double*)m;
mp[1+2*3] == m[2][1]; //true
mp[2+2*3] == m[2][2]; //true
mp[2+2*3] == m[3][1]; //false
一般来说,没有“正确”的方式来存储矩阵。行主要格式也称为“C样式”矩阵,而列主要称为“fortran-style”矩阵。命名是由于两种语言之间的多维数组索引方案不同。