⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

1.4 时频分析

核心问题: 如何同时看到信号的时间和频率信息?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明


问题:时域和频域的权衡

傅里叶变换的局限

傅里叶变换告诉我们信号包含哪些频率,但不告诉我们这些频率什么时候出现

例子:

信号1:10 Hz正弦波(全程)
信号2:前5秒是10 Hz,后5秒是20 Hz

频域看起来不同,但如果只看频谱,
我们看不出频率是什么时候变化的。

不确定性原理

时间分辨率和频率分辨率不能同时很高。

  • 窗口很小 → 时间分辨率高,频率分辨率低
  • 窗口很大 → 频率分辨率高,时间分辨率低

这是信号处理的基本限制,不是算法问题。


短时傅里叶变换(STFT)

思想

把信号分成小段,对每段做傅里叶变换。

数学表达

X(t,f)=x(τ)w(tτ)ej2πfτdτ

其中:

  • x(τ):原始信号
  • w(t):窗函数(决定每段的长度)
  • t:时间
  • f:频率

步骤

  1. 选择窗函数(如Hann窗)
  2. 把信号分成重叠的小段
  3. 对每段做FFT
  4. 把结果排列成时频图

窗函数的选择

常见窗函数:

  • Hann窗:平衡的时频分辨率
  • Hamming窗:类似Hann,但边界不为0
  • Blackman窗:更好的频率分辨率,但时间分辨率差

时频图(Spectrogram)

什么是时频图

一个二维图像,显示信号在不同时刻的频率成分。

  • 横轴:时间
  • 纵轴:频率
  • 颜色深度:幅度大小

例子

下图展示了同一段音乐信号的三种视角:时域波形、频谱(FFT)和时频图(语谱图)。

Music Signal Time-Frequency Analysis

图1.4a:同一段音乐信号的三种视角。上:时域波形,可以看到音符的幅度包络;中:频谱(FFT),可以看到各音符的基频和谐波,但无法区分哪个音符在哪个时刻出现;下:语谱图(STFT),同时展示了时间和频率信息,可以清晰看到每个音符的出现时刻和频率成分。

代码文件: code/ch01_dsp/time_freq_analysis.py
运行方式: python code/ch01_dsp/time_freq_analysis.py

优点

  • 既保留时间信息,又保留频率信息
  • 直观看出频率如何随时间变化
  • 适合分析非平稳信号

小波变换(Wavelet Transform)

问题

STFT的窗大小固定,不适合分析多尺度信号。

例子:

  • 低频成分变化慢,需要大窗口
  • 高频成分变化快,需要小窗口

解决方案

小波变换用不同大小的窗分析不同频率。

数学表达

W(a,b)=x(t)ψ(tba)dt

其中:

  • a:尺度(对应频率)
  • b:位置(对应时间)
  • ψ(t):母小波

优点

  • 自适应的时频分辨率
  • 多尺度分析
  • 适合分析突变和奇异点

实际应用

音乐分析

  • 识别乐器:不同乐器的频率特征不同
  • 节拍检测:看时频图中的能量峰值
  • 音高估计:找主频率成分

医学诊断

  • 脑电图(EEG):看脑波的频率变化
  • 心电图(ECG):检测异常心律
  • 肌电图(EMG):分析肌肉活动

地震学

  • 地震波分析:不同类型地震波的频率不同
  • 震源定位:用时频信息确定震源

语音处理

  • 语音识别:提取语音的时频特征
  • 说话人识别:不同人的频率特征不同
  • 语音增强:去掉噪音的频率成分

本节小结

时频分析解决了傅里叶变换的局限:

  • STFT:简单有效,固定时频分辨率
  • 小波变换:自适应分辨率,适合多尺度分析
  • 时频图:直观展示信号的时频特性

下图进一步对比了不同窗口大小的 STFT、小波变换,以及平稳信号与非平稳信号的时频图差异:

Time-Frequency Comparison

图1.4b:时频分析方法对比。上行:短窗 STFT(时间分辨率高)vs 长窗 STFT(频率分辨率高),体现不确定性原理;中行左:小波变换(CWT),低频用宽窗、高频用窄窗,自适应分辨率;中行右:时频分辨率权衡示意图,STFT 使用固定大小的时频格,小波使用自适应大小的时频格;下行:平稳信号(固定频率)vs 非平稳信号(频率随时间变化)的语谱图对比。

代码文件: code/ch01_dsp/time_freq_analysis.py
运行方式: python code/ch01_dsp/time_freq_analysis.py


与后续章节的联系

时频分析强调“局部窗口”和“多尺度”的权衡,这会在后续序列建模中继续出现:

  1. 局部窗口

    • STFT 用窗口限制分析范围,后续局部注意力和滑动窗口模型也会使用类似的范围约束。
  2. 多尺度结构

    • 小波变换用不同尺度分析信号,后续深度网络也会逐层形成从局部到全局的表示。
  3. 分辨率权衡

    • 时间分辨率和频率分辨率不能同时无限提高,这对应到长上下文建模中的信息保留、计算成本和局部细节之间的取舍。

这里保留的是结构直觉,不把时频图和注意力图视为严格等价。


下一节: 1.5 随机信号理论

本教程采用 CC BY-NC-SA 4.0 许可协议