1807 年
约瑟夫·傅里叶提出任何周期函数都可以表示为无限个正弦和余弦函数的和(傅里叶级数)。这一理论最初在法国科学院引起争议,拉普拉斯和拉格朗日曾质疑其严谨性。
探索信号处理的核心奥秘:从时间波形到频率谱线的数学桥梁。理解 傅里叶变换,掌握 信号分析 的关键钥匙。
在信号处理、物理学、电子工程以及数据分析领域,理解信号的本质至关重要。信号通常可以从两个不同的角度来观察:时域(Time Domain)和频域(Frequency Domain)。
在时域中,信号被表示为时间的函数。我们关注的是信号振幅如何随时间变化。例如,音频波形图展示了声音压力随时间的起伏。这是最直观的观察方式,就像看心电图一样,直接看到波动的过程。
在频域中,信号被分解为不同频率的正弦波的叠加。我们关注的是信号中包含哪些频率成分,以及每个频率成分的强度和相位。例如,音频均衡器展示了不同频段(低音、中音、高音)的能量分布。
连接时域与频域的桥梁是傅里叶变换(Fourier Transform)。根据信号是连续还是离散,公式有所不同。
对于连续时间信号 f(t),其傅里叶变换 F(ω) 定义为:
要从频域恢复时域信号,使用逆傅里叶变换:
在计算机中处理信号时,信号是离散采样的。设有 N 个采样点,DFT 公式为:
FFT 不是一种新的变换,而是计算 DFT 的高效算法。它通过分治策略,将 N 点 DFT 分解为两个 N/2 点 DFT,从而大幅减少计算量。
现代工程中,我们极少手动计算傅里叶变换,而是使用成熟的库函数。以下以 Python 为例,展示如何使用 NumPy 和 Matplotlib 进行时域到频域的转换。
import numpy as np
import matplotlib.pyplot as plt
1. 生成时域信号: 50Hz 正弦波 + 120Hz 正弦波
fs = 1000 # 采样率 1000Hz
t = np.linspace(0, 1, fs, endpoint=False)
signal = 0.7 np.sin(2 np.pi 50 t) + np.sin(2 np.pi 120 t)
2. 计算 FFT
N = len(signal)
yf = np.fft.fft(signal)
xf = np.fft.fftfreq(N, 1/fs)
3. 取正频率部分 (因为实信号的频谱是对称的)
pos_mask = xf >= 0
xf_pos = xf[pos_mask]
yf_pos = np.abs(yf[pos_mask]) / N # 归一化幅度
4. 绘图
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(t, signal)
plt.title("Time Domain Signal")
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
plt.subplot(1, 2, 2)
plt.plot(xf_pos, yf_pos)
plt.title("Frequency Domain Spectrum")
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
plt.grid(True)
plt.show()这段代码生成了一个包含 50Hz 和 120Hz 成分的混合信号,并通过 FFT 清晰地展示了这两个频率峰值。
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间向量
signal = 0.7sin(2pi50t) + sin(2pi120t);
% 计算 FFT
N = length(signal);
yf = fft(signal);
xf = fs(0:(N/2))/N; % 频率轴
% 绘制频谱
plot(xf, abs(yf(1:N/2+1))2/N);
title('Frequency Domain Spectrum');
xlabel('Frequency (Hz)');
ylabel('Amplitude');在 C/C++ 中,通常不从头实现 FFT,而是使用库:
使用 FFTW 的基本步骤:
fftw_plan plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);fftw_execute(plan);fftw_destroy_plan(plan);时域和频域的转换公式不仅是数学理论,更是现代科技的基石。以下是几个关键应用领域:
音频压缩(MP3, AAC)利用频域分析去除人耳不敏感的频率成分。降噪算法通过识别并抑制背景噪声的频率特征来实现。均衡器(EQ)则是直接修改频域能量分布。
OFDM(正交频分复用)是 4G/5G 和 Wi-Fi 的核心技术。它将高速数据流分割到多个正交的子载波上并行传输,抗多径干扰能力强。这完全依赖于频域的高效处理。
图像压缩(JPEG)使用离散余弦变换(DCT,傅里叶变换的变种),将图像从空间域转换到频率域,量化高频细节以实现压缩。图像滤波(如高斯模糊、锐化)在频域中表现为乘法操作,效率更高。
心电图(ECG)和脑电图(EEG)分析常结合时频域特征。MRI(核磁共振)成像原理直接基于傅里叶变换,采集的是 k-空间(频域)数据,重建图像需进行逆傅里叶变换。
机械振动分析中,通过监测轴承或齿轮的振动信号频谱,可以识别出特定的故障频率(如轴承损伤频率),实现预测性维护。
在量子力学中,位置和动量是傅里叶变换对。海森堡不确定性原理在数学上源于傅里叶变换的性质:一个函数越局域化(时域/位置域),其变换越分散(频域/动量域)。
理解 时域和频域的转换 的历史,有助于我们把握其演变脉络。
约瑟夫·傅里叶提出任何周期函数都可以表示为无限个正弦和余弦函数的和(傅里叶级数)。这一理论最初在法国科学院引起争议,拉普拉斯和拉格朗日曾质疑其严谨性。
傅里叶出版《热的解析理论》,系统阐述了傅里叶级数和积分理论,奠定了现代调和分析的基础。
库利(Cooley)和图基(Tukey)发表《An algorithm for the machine calculation of complex Fourier series》,正式提出快速傅里叶变换(FFT)算法,使实时信号处理成为可能,引发了信号处理领域的革命。
FFT 成为 DSP(数字信号处理器)的标准指令。随着计算机算力提升,FFT 应用扩展到图像处理、通信、医学成像等几乎所有科学工程领域。短时傅里叶变换(STFT)、小波变换等时频分析工具相继发展,解决了非平稳信号分析难题。
时域表示信号随时间变化的规律,关注振幅与时间的关系;频域表示信号包含的频率成分,关注振幅(或能量)与频率的关系。两者通过傅里叶变换相互转换,提供互补的信息视角。
传统的离散傅里叶变换(DFT)计算复杂度为 O(N²),当数据量 N 很大时(如音频处理中的数千个点),计算极慢。FFT 通过利用旋转因子的对称性和周期性,将复杂度降低到 O(N log N),极大提高了计算效率,使得实时信号处理成为可能。
标准傅里叶变换假设信号是平稳的(统计特性不随时间变化),因此无法提供频率成分随时间变化的信息。对于非平稳信号(如音乐、语音),通常需要使用短时傅里叶变换(STFT)或小波变换(Wavelet Transform)来获得时频局部化信息。
频谱泄漏是指由于截断信号导致的频谱能量扩散现象。当 FFT 截取的信号片段不是周期的整数倍时,边界不连续会引起高频分量泄漏到整个频谱。避免方法包括:增加采样点数以逼近整数周期,或使用加窗函数(如汉宁窗)平滑信号边界。