我写了一个简单的测试程序,我正在做复杂到复杂的FT,我只生成了一些数据1..50并将其插入到数组的每个索引的实部和虚部.
当我做这样的操作IFFT(FFT(A))= A.
为了测试它们,我得到了每个库的不同结果.
FFTW,我必须将输出除以len(A)以取回原始A.
然而,执行此操作然后使用CUFFT反向FFT,看起来我必须除以(sqrt(2)*50)以返回原始数据.
这个额外的平方根因子来自哪里?
根据CUFFT文档:CUFFT执行非标准化FFT; 也就是说,对输入数据集执行前向FFT,然后对得到的集合进行逆FFT,产生的数据等于按元素数量缩放的输入.通过数据集的大小的倒数来缩放变换,留给用户按照看到的拟合执行.
提前致谢
CUFFT与FFTW具有相同的行为,它计算非标准化的FFT. IFFT(FFT(A))=n A其中n是向量的长度.长度n是样本数(不是浮点数或字节数).FFTW和CUFFT之间存在一些填充差异,C2R和R2C可以搞砸一个简单的比较,但不能用于C2C.我会仔细检查您的数据设置和长度计算,并在FFTW和CUFFT中验证您的计划.
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |