1. 为什么我们需要频域分析?
第一次接触信号处理时,我完全无法理解为什么要把简单的时间信号转换到复杂的频域。直到有一次调试音频设备时,发现无论如何调整均衡器,某个频段总是有杂音。当时一位资深工程师只说了一句:"把时域信号转成频谱看看",问题立刻迎刃而解——原来是一个50Hz的工频干扰叠加在音频信号上,在时域波形中完全看不出来,但在频域却一目了然。
这个经历让我明白:时域和频域就像观察同一事物的两个不同维度。时域告诉我们信号随时间的变化,而频域揭示信号由哪些频率成分组成。就像通过棱镜将白光分解为七彩光谱,傅里叶变换就是我们的"数学棱镜"。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 傅里叶变换:时域与频域的桥梁
2.1 从傅里叶级数到傅里叶变换
1807年,法国数学家傅里叶提出了一个革命性的想法:任何周期函数都可以表示为正弦函数的加权和。这就是傅里叶级数的核心思想。对于周期为T的信号x(t),其傅里叶级数展开为:
x(t) = a₀/2 + Σ[aₙcos(nω₀t) + bₙsin(nω₀t)]
其中ω₀=2π/T是基波频率,系数aₙ和bₙ代表各频率分量的强度。
后来这个概念被推广到非周期信号,发展出傅里叶变换。连续时间傅里叶变换(CTFT)的定义是:
X(f) = ∫x(t)e^(-j2πft)dt
这个公式就像一把钥匙,打开了时域与频域之间的转换之门。
2.2 离散傅里叶变换(DFT)的实际应用
在实际工程中,我们处理的是数字化后的离散信号。这时就需要使用离散傅里叶变换(DFT)。DFT的定义为:
X[k] = Σx[n]e^(-j2πkn/N), k=0,1,...,N-1
其中N是采样点数。DFT将离散时域信号x[n]转换为离散频域表示X[k]。
在MATLAB中,我们可以用fft函数快速计算DFT(快速傅里叶变换FFT是DFT的高效算法):
matlab复制fs = 1000; % 采样率1kHz
t = 0:1/fs:1-1/fs; % 1秒时间向量
x = sin(2*pi*50*t) + 0.5*sin(2*pi*120*t); % 50Hz和120Hz正弦波叠加
X = fft(x); % 计算FFT
f = (0:length(X)-1)*fs/length(X); % 频率轴
plot(f,abs(X)) % 绘制
