Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2dfft-零虚部 我将Python例程集成到C++代码中。_Python_C++_Image_Algorithm_Fft - Fatal编程技术网

2dfft-零虚部 我将Python例程集成到C++代码中。

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更简单)

有一些实矩阵的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更简单)
    • 所以,如果你用FFT C=f(R)编码这样的输入数据,那么它通常会更快
    • 然后标准FFT C=f(C)
    • 而且您不需要为输入虚部分配内存
    • 此外,当输入数据为实时,FFT输出才是对称的
    • 因此,您只需计算输出数据的前一半,然后镜像其余数据
  • 震级差

    • 可能是FFT的实现错误(在python或C++中)
    • 或者你只是有不同的归一化系数
    • 绘制数据并比较差异是否只是恒定比例因子
    • 如果没有,那么您在FFT实现的某个地方有bug,或者python FFT不是FFT
    • 也不要忘记任何FFT的数据大小必须是2的幂
    • 如果您的实现期望这样,那么这也可能是错误的原因
    • 因此,尝试在FFT之前通过零填充将矩阵512x24调整为512x32
    • 造成这种情况的另一个原因可能是溢出错误
    • 如果你把大数字和小数字混在一起,你的准确度就会丢失
    • 特别是通过FFT递归,输出幅度可以是10e5,但子结果可以大得多
  • 二维FFT

    • 看这里
    • 包含1D DFT、IDFT实现C++(<代码> R~> C <代码>,<代码> C > R )
    • 以及如何用它计算二维变换的算法
    • 具有正确的结果,以便您可以检查您的

  • 我添加了答案,但没有更多关于您的FFT数据和实现的信息,这一切都只是猜测。。。