2dfft-零虚部 我将Python例程集成到C++代码中。
有一些实矩阵的fft 2D计算,在Python中使用2dfft-零虚部 我将Python例程集成到C++代码中。,python,c++,image,algorithm,fft,Python,C++,Image,Algorithm,Fft,有一些实矩阵的fft 2D计算,在Python中使用 F_BLK=np.fft.fft2(blk) F_BLK是一个复数512*24矩阵,系数为实数的复数部分,imag部分的数量级为10e5 当计算C++中的矩阵FFT2时,得到复系数的复矩阵,实部具有10e6数量级,虚数部分> 如果fft2的虚部为空,这意味着什么 这些错误结果的可能来源是什么 你推荐C++中的一个库来计算FFT2?< /LI> 如果使用实输入进行FFT 那么您就不需要进行太多的计算(C+=R*C比C+=C*C更简单)
F_BLK=np.fft.fft2(blk)
F_BLK
是一个复数512*24矩阵,系数为实数的复数部分,imag部分的数量级为10e5
当计算C++中的矩阵FFT2时,得到复系数<强>的复矩阵,实部具有10e6数量级,虚数部分>
- 如果fft2的虚部为空,这意味着什么
- 这些错误结果的可能来源是什么 你推荐C++中的一个库来计算FFT2?< /LI>
- 那么您就不需要进行太多的计算(C+=R*C比C+=C*C更简单)
- 所以,如果你用FFT C=f(R)编码这样的输入数据,那么它通常会更快
- 然后标准FFT C=f(C)
- 而且您不需要为输入虚部分配内存
- 此外,当输入数据为实时,FFT输出才是对称的
- 因此,您只需计算输出数据的前一半,然后镜像其余数据
- 可能是FFT的实现错误(在python或C++中)
- 或者你只是有不同的归一化系数
- 绘制数据并比较差异是否只是恒定比例因子
- 如果没有,那么您在FFT实现的某个地方有bug,或者python FFT不是FFT
- 也不要忘记任何FFT的数据大小必须是2的幂
- 如果您的实现期望这样,那么这也可能是错误的原因
- 因此,尝试在FFT之前通过零填充将矩阵512x24调整为512x32
- 造成这种情况的另一个原因可能是溢出错误
- 如果你把大数字和小数字混在一起,你的准确度就会丢失
- 特别是通过FFT递归,输出幅度可以是10e5,但子结果可以大得多李>
- 看这里
- 包含1D DFT、IDFT实现C++(<代码> R~> C <代码>,<代码> C > R )
- 以及如何用它计算二维变换的算法
- 具有正确的结果,以便您可以检查您的
我添加了答案,但没有更多关于您的FFT数据和实现的信息,这一切都只是猜测。。。