Как 3D сложный массив выложен в памяти - PullRequest
0 голосов
/ 16 февраля 2019

Хотелось бы узнать, как сложный трехмерный массив размещается в памяти компьютера?Пример в Фортране может помочь.

Я пытаюсь выполнить одномерное синусоидальное преобразование трехмерного сложного массива и использую подпрограмму из FFTW.http://www.fftw.org/fftw3_doc/Advanced-Complex-DFTs.html#Advanced-Complex-DFTs

Так что мне нужно выяснить значения параметров (т.е. howmany, istride и idist) в подпрограмме FFT.Спасибо.

1 Ответ

0 голосов
/ 16 февраля 2019

Сложные скалярные значения Фортрана хранятся в виде пар значений [реальных, мнимых].Все массивы Фортрана имеют главный порядок столбцов , что означает, что первый индекс является наиболее часто меняющимся.И каждый элемент сложного массива представляет собой (реальную, воображаемую) пару.

Массив Фортрана

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)) ...

Se мажорный порядок столбцов ссылка для более подробной информации.

...