快速傅立叶变换(Fast Fourier Transform,简称FFT)是一种高效计算离散傅立叶变换(Discrete Fourier Transform,简称DFT)及其逆变换的算法。DFT 是一种将信号从时域转换到频域的方法,而频域表示可以用来分析信号中的不同频率成分。
传统的DFT算法在计算上需要 (O(N^2)) 次复数乘法和 (O(N^2)) 次复数加法,其中 (N) 是数据点的数目。FFT算法通过巧妙的分治策略,将计算复杂度降低到 (O(N \log N)),极大地提高了计算效率。
以下是一个使用NumPy库进行FFT计算的简单示例:
import numpy as np
import matplotlib.pyplot as plt
# 生成一个示例信号
Fs = 1000 # 采样频率
T = 1.0 / Fs # 采样周期
L = 1500 # 信号长度
t = np.linspace(0, L*T, L) # 时间向量
# 生成包含两个频率成分的信号
S = 0.7 * np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 120 * t)
# 计算FFT
Y = np.fft.fft(S)
# 计算频率轴
P2 = np.abs(Y / L)
P1 = P2[:L//2+1]
P1[1:-1] = 2 * P1[1:-1]
f = Fs * np.arange(L//2+1) / L
# 绘制结果
plt.figure()
plt.plot(f, P1)
plt.title('Single-Sided Amplitude Spectrum of S(t)')
plt.xlabel('f (Hz)')
plt.ylabel('|P1(f)|')
plt.show()
通过学习和应用FFT,可以高效地进行信号分析和处理,广泛应用于各种工程和科学计算领域。
领取专属 10元无门槛券
手把手带您无忧上云