3D复杂数组如何在内存中布置

时间:2019-02-15 21:49:16

标签: fortran fftw

我想知道3d复杂数组在计算机内存中的布局如何? Fortran中的示例可能会有所帮助。

我正在尝试对3d复杂数组进行一维正弦变换,并且正在使用FFTW中的例程。 http://www.fftw.org/fftw3_doc/Advanced-Complex-DFTs.html#Advanced-Complex-DFTs

所以我需要找出FFT例程中的参数值(即howmany,istride和idist)。谢谢。

1 个答案:

答案 0 :(得分:0)

复杂的Fortran标量值存储为成对的值(实数,虚数)。所有Fortran数组均为column-major order,这意味着第一个索引是变化最频繁的索引。而且,复杂数组的每个元素都是(真实,虚构的)对。

一个Fortran数组

complex(c_float_complex) :: A(nx, ny, nz)

就像一个C数组

float A[nz][ny][nx][2]

(是的,我知道现代C中也有可选的复杂类型)。

因此序列如下:

(re(1,1,1),im(1,1,1)), (re(2,1,1,),im(2,1,1)), (re(3,1,1,),im(3,1,1)) ... (re(nx,1,1,),im(nx,1,1)), (re(1,2,1),im(1,2,1)) ...

点击column-major order链接以获取更多详细信息。