什么是快速傅立叶变换?

the*_*row 3 algorithm math fft

我被问到一个面试问题,我需要使用它,但我不知道它是什么.
那么用简单的英语什么是快速傅立叶变换?如何将它的(x,y)值作为输入来使用它来找到函数的导数?

你会如何实现它?

编辑:
我问这个是因为给定一系列(x,y)值我需要计算函数的样子,派生它并找出它不断变化的次数(即(0,1)), 1,2)被计为1)或根本不变(0,5),(1,5)也被计为一次变化).

mac*_*die 10

至于问题的第一部分,前物理学教授Bartosz Milewski有一个非常好的解释,FFT是什么以及它是如何工作的.

此外,掌握一天的傅里叶变换也值得一读.

用英语讲 (?)

假设你有来自扬声器的声音.

然后你设置,让我们在这里得到一个很好的圆数,1024个谐波振荡器,它们会响应特定的频率范围.

播放声音,比如一秒钟.

振荡器开始引起扬声器发出的声音.在上述第二个之后,你会读到每个振荡器产生共振的程度.因此,您可以获得离散傅里叶变换,这意味着您可以获得每个频率范围对扬声器发出的声音的贡献程度.

您可以将其视为一系列频率范围的强度,而不是将声音视为由波形引起的气压量,在时隙中发生变化.

当然在解释DFT时,扬声器部分并不合适,因为您必须处理采样输入.因此,在这种情况下,实际应在1/44秒之后测量1024个数字"振荡器",假设音频以44kHz的速率采样.

快速傅里叶变换是一种执行离散傅里叶变换的算法,计算机可以很容易地在输入信号上运行.它强加了你必须在实现中使用的一些约束(例如,样本的数量必须是2的幂),因为它使用一些聪明的技巧来大大减少对样本缓冲区执行的计算量.

实际上没有必要更深入,因为我给出的两个链接提供了一个非常明确的解释.请注意,如果不了解其背后的数学,就不可能从理论到实施.

我希望这个介绍有道理!


Nis*_*ant 7

傅里叶分析是一系列数学技术,所有这些都基于将信号分解为正弦曲线.离散傅里叶变换(DFT)是与数字化信号一起使用的系列成员.

来自Wolfram,

快速傅立叶变换(FFT)是离散傅立叶变换算法,其将N点所需的计算次数从2N ^ 2减少到2NlgN,其中lg是基数-2对数.如果要变换的函数与采样频率不是谐波相关的,则FFT的响应看起来像sinc函数(尽管积分功率仍然是正确的).使用变迹函数通过变迹可以减少混叠(也称为泄漏).然而,混叠减少是以扩大光谱响应为代价的.

它通常作为信号处理课程的一部分进行教学.因此,您一定需要处理一些图像/声音处理.:)

请参阅斯坦福工程学院的这些讲座:这里

基本上,DFT是

在此输入图像描述

而Cooley-Tukey FFT算法的伪代码如下:

Y0,...,N?1 ? ditfft2(X, N, s):             DFT of (X0, Xs, X2s, ..., X(N-1)s):
    if N = 1 then
        Y0 ? X0                                      trivial size-1 DFT base case
    else
        Y0,...,N/2?1 ? ditfft2(X, N/2, 2s)             DFT of (X0, X2s, X4s, ...)
        YN/2,...,N?1 ? ditfft2(X+s, N/2, 2s)           DFT of (Xs, Xs+2s, Xs+4s, ...)
        for k = 0 to N/2?1                           combine DFTs of two halves into full DFT:
            t ? Yk
            Yk ? t + exp(?2?i k/N) Yk+N/2
            Yk+N/2 ? t ? exp(?2?i k/N) Yk+N/2
        endfor
    endif
Run Code Online (Sandbox Code Playgroud)

(从http://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm中无耻地复制)

另外,你可能想要研究一下

  1. http://www.fftw.org/download.html
  2. http://www.developer.com/java/other/article.php/3457251
  3. http://www.dspguide.com/pdfbook.htm


Tim*_*Tim 6

快速傅里叶变换(FFT)是用于计算离散傅里叶变换(DFT)的算法.您可以将DFT视为将采样信号表示为正弦曲线之和的一种方式.由于正弦的导数很简单,您可以通过查找其DFT的导数来估计信号样本的导数.

这是信号处理中的一个大话题,我建议购买入门书或学习课程以了解更多信息.

更新:在简洁的英语中,它是一种将数字序列视为波的总和的方式.