【问题标题】:Fast Fourier Transform快速傅里叶变换
【发布时间】:2011-07-12 10:42:05
【问题描述】:

我需要将两个多项式相乘,每个多项式都有小的整数系数。我需要一个可以对它们进行卷积的 C/C++ 中的快速 FFT 例程。我见过几个库,但它们似乎太大,分布在多个文件中。重要的是我需要的代码不会太长,并且可以很容易地在单个 .c/.cpp 文件中使用和编译。

  1. 如果不是小整数,至少应该针对实际输入优化 FFT。
  2. Radix 4 实施(如果可用)也可以。
  3. 编译它应该不需要特殊的编译标志,因为程序的编译必须在我无法控制的外部环境中完成。

一个非常符合我需求的是here。但我需要两倍的速度。

【问题讨论】:

  • 你有什么问题?我需要一百万美元。另外,我喜欢奶酪。很多。
  • @muntoo - 实数多项式卷积本身就是一个重要问题,因此我认为问这个问题很自然。我不需要 FFT 的全部功能,只需要一个特定的小子集,而且有一个几乎适合我需要的操作系统实现这一事实意味着它也不是不切实际的。
  • 多项式有多大? FFT 比直接卷积具有更好的复杂性,但常数也明显更高,对于小问题,直接卷积会更快。
  • 相当大。度数约为 10^6。我确信 O(N^2) 算法不会在任何合理的时间内运行。

标签: c++ c signal-processing fft dft


【解决方案1】:

我已经根据我过去的需要调整了这个 example on DspDimension 中的 smbFft 函数。

【讨论】:

    【解决方案2】:

    如需简单易用的 FFT 实现,请尝试 KissFFT。如果您需要绝对的最高性能,并且不介意有点复杂,那么它必须是FFTW

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2017-09-14
        • 2012-12-10
        • 2010-12-13
        • 2013-03-31
        • 2012-05-25
        • 2015-08-19
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多