我想知道3d复杂数组在计算机内存中的布局如何? Fortran中的示例可能会有所帮助。
我正在尝试对3d复杂数组进行一维正弦变换,并且正在使用FFTW中的例程。 http://www.fftw.org/fftw3_doc/Advanced-Complex-DFTs.html#Advanced-Complex-DFTs
所以我需要找出FFT例程中的参数值(即howmany,istride和idist)。谢谢。
答案 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链接以获取更多详细信息。