Должен ли я использовать 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. Первый вариант кажется наиболее практичным. Что может решить вашу проблему? "

-@ Фрэнсис

Другие вопросы по тегам