我不使用任何矩阵库,而是使用普通的std::vector作为我的矩阵数据。
为了填充2D数据,我使用以下代码:
data[iy + dataPointsY * ix] = value;
我想知道这是否正确,或者必须是另一种方式(首先是ix)。 据我了解,fftw需要“行优先格式”。由于我使用它,因此公式应根据行优先格式编写。
我不使用任何矩阵库,而是使用普通的std::vector作为我的矩阵数据。
为了填充2D数据,我使用以下代码:
data[iy + dataPointsY * ix] = value;
我想知道这是否正确,或者必须是另一种方式(首先是ix)。 据我了解,fftw需要“行优先格式”。由于我使用它,因此公式应根据行优先格式编写。
fftw
,您需要做的是:data[ix + iy*dataPointsY]
行优先的意义在于,当组合索引增加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-style”矩阵,而列主格式则称为“fortran-style”矩阵。这个命名是由于两种语言之间的多维数组索引方案不同。