我编写了一个简单的测试程序,在其中我正在执行复杂到复杂的 FT,我刚刚生成了一些数据 1..50 并将其插入到数组的每个索引的实部和虚部。
当我做这样的操作时 IFFT(FFT(A)) = A
为了测试它们,我对每个库都得到了不同的结果。
FFTW,我必须将输出除以 len(A) 才能取回原始 A
但是,向前执行此操作然后使用 CUFFT 反向 FFT,看起来我必须除以 (sqrt(2)*50) 才能返回原始数据。
这个额外的平方根因子来自哪里?
根据 CUFFT 文档: CUFFT 执行未归一化的 FFT;也就是说,对输入数据集执行正向 FFT,然后对结果集执行反向 FFT,产生的数据等于按元素数量缩放的输入。通过数据集大小的倒数缩放任一变换,留给用户执行。
提前致谢