Я не знаком с CUDA, поэтому примите это во внимание при чтении моего ответа.Однако я знаком с БПФ и обработкой сигналов в целом.
Звучит так, как будто вы начинаете с матрицы H (строки) x W (столбцы), и что вы делаете 2D-БПФ, которое по существу выполняетБПФ на каждой строке, и вы получите матрицу H x W / 2 + 1.БПФ по ширине возвращает значения W, но функция CUDA возвращает только W / 2 + 1, потому что реальные данные даже в частотной области, поэтому отрицательные данные частоты являются избыточными.
Итак, если вы хотите воспроизвести недостающие точки W / 2-1, просто отразите положительную частоту.Например, если одна из строк выглядит следующим образом:
Индексные данные
0 12 + i
1 5 + 2i
2 6
3 2 - 3i
...
Индекс 0 - это ваша мощность постоянного тока, индекс 1 - самая низкая положительная частота, и так далее.Таким образом, вы сделаете свой ближайший к DC блок с отрицательной частотой 5 + 2i, следующий ближайший 6 и так далее.Где вы разместите эти значения в массиве, зависит от вас.Я бы сделал это так, как это делает Matlab, с данными отрицательной частоты после данных положительной частоты.
Надеюсь, это имеет смысл.