Должен ли я использовать Halfcomplex2Real или Complex2Complex
Доброе утро, я пытаюсь выполнить 2D FFT
как 2 1-Dimensional FFT
,
Проблема заключается в следующем:
Там матрица комплексных чисел, сгенерированных inverse FFT
на массиве действительных чисел, давайте назовем это arr[-nx..+nx][-nz..+nz]
,
Теперь, так как исходный массив был составлен из действительных чисел, я использую симметрию и уменьшаю свой массив до arr[0..nx][-nz..+nz]
,
Моя проблема начинается здесь, с arr[0..nx][-nz..nz]
предоставлена. Теперь я должен вернуться в область действительных чисел. Вопрос в том, какую трансформацию мне следует использовать в двух направлениях?
В x
Я использую fftw_plan_r2r_1d( .., .., .., FFTW_HC2R, ..)
, называется Half complex to Real
преобразование, потому что в этом направлении я использовал симметрию, и это нормально, я думаю. Но в z
направление я не могу понять, если я должен использовать то же преобразование или, Complex to complex (C2C)
трансформация? Что правильно один раз и почему?
В случае необходимости здесь, на странице 11, кратко описано преобразование HC2R
Спасибо
0 ответов
"Чтобы легко получить результат, сопоставимый с результатом
fftw_plan_dft_r2c_2d()
, вы можете связать звонок сfftw_plan_dft_r2c_1d()
и вызов dft от сложного к сложномуfftw_plan_many_dft()
. Аргументыhowmany
а такжеistride
можно легко настроить в соответствии с шаблоном выводаfftw_plan_dft_r2c_1d()
. Вопрекиfftw_plan_dft_r2c_1d()
, r2r_1d(...FFTW_HR2C...) разделяет действительную и комплексную составляющие каждой частоты. ВторойFFTW_HR2C
могут применяться и были бы сопоставимы сfftw_plan_dft_r2c_2d()
но не совсем похоже.Как указано на странице 11 документации, на которую вы разумно сослались,
Однако половина этих преобразований столбцов состоит из мнимых частей и, следовательно, должна быть умножена на I и объединена с преобразованиями r2hc реальных столбцов для получения амплитуд 2d DFT; ... Таким образом... мы рекомендуем использовать обычный интерфейс r2c/c2r.'
Поскольку у вас есть массив комплексных чисел, вы можете либо использовать преобразования c2r, либо развернуть реальные / мнимые части и попытаться использовать преобразования HC2R. Первый вариант кажется наиболее практичным. Что может решить вашу проблему? "
-@ Фрэнсис