Должен ли я использовать Halfcomplex2Real или Complex2Complex - PullRequest
0 голосов
/ 06 февраля 2019

Доброе утро, я пытаюсь выполнить 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

Спасибо

1 Ответ

0 голосов
/ 23 августа 2019

"Чтобы легко получить результат, сравнимый с результатом 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 амплитуд ДПФ; ... Таким образом, ... мы рекомендуем использовать обычный r2c / c2rinterface. '

Поскольку у вас есть массив комплексных чисел, вы можете использовать преобразования c2r или развернуть вещественные / мнимые части и попытаться использовать преобразования HC2R. Первый вариант seems самый практичный. Кто мог бы решить вашу проблему? "

- @ Francis

...