PDF
The Discrete Fourier Transform1Understanding the Fast Fourier Transform (快速傅里叶变换)ContentsIntroduction ........................................................................................... 1The Discrete Fourier Transform ..................................................................... 1The Cooley–Tukey FFT Algorithm .................................................................. 2Python Implementation ............................................................................. 3Applications ........................................................................................... 4Conclusion ............................................................................................ 4Bibliography .......................................................................................... 5The FFT is the most important numerical algorithm of our lifetime.Introduction然而,直接计算需要次运算,对于大规模数据来说效率太低。的直接算法复杂度很高对的信号需要约次运算。年,和发表了快速傅里叶变换()算法,将复杂度降低到,使得频谱分析在实际工程中变得可行。是信号处理领域的革命性突破,被誉为世纪最重要的算法之一。●●The Discrete Fourier Transformprimitive -th root of unity The Cooley–Tukey FFT Algorithm2Key PropertiesLinearityParseval’s theoremConvolution theoremShift property时域中的移位对应频域中的相位旋转。若,则。A Visual IntuitionThe Cooley–Tukey FFT Algorithmbutterfly operation通过递归地应用这一分解,我们可以将点的计算分解为层蝶形运算,每层包含次蝶形操作。Complexity AnalysisAlgorithmMultiplicationsAdditionsTotal Python Implementation3Speedup factorPython Implementationimport numpy as npdef fft(x): """Compute the FFT of sequence x (length must be a power of 2).""" N = len(x) if N == 1: return x # Split into even and odd indices even = fft(x[0::2]) odd = fft(x[1::2]) # Twiddle factors: ω_N^k for k = 0, ..., N/2 - 1 T = np.exp(-2j * np.pi * np.arange(N // 2) / N) # Butterfly: combine E_k and O_k return np.concatenate([ even + T * odd, # X_k = E_k + ω^k · O_k even - T * odd # X_{k+N/2} = E_k - ω^k · O_k ])# Verify against NumPy's FFTif __name__ == "__main__": x = np.random.random(1024) assert np.allclose(fft(x), np.fft.fft(x)) print("FFT implementation verified!")What the FFT Reveals Conclusion4ApplicationsThe FFT reduced the operation count for an -point transform from to . For , that’s a factor of nearly 100,000. This single algorithm change made real-time digital signal processing possible.— Press et al. [4]Polynomial multiplicationLarge integer multiplicationPartial differential equations谱方法利用在频域中高效求解偏微分方程,在流体力学和量子力学模拟中广泛使用ConvolutionFFT in the Real WorldConclusion Bibliography5divide and conquer via the symmetry of roots of unityBibliographyIntroduction to Applied MathematicsThe Scientist and Engineer's Guide to Digital Signal ProcessingProceedings of the IEEENumerical Recipes: The Art of Scientific Computing

HTML view coming soon.

Download PDF for the full formatted version.