听一段轴承录音,嗡嗡声里混着尖啸,普通傅里叶变换只能告诉你有哪些频率成分,说不清尖啸是全程都有还是某个时刻突然冒出来。要看频率怎么随时间变化,就得靠时频分析。

核心思路不复杂

把信号切成一小段一小段,每段各自做频谱,再把结果按时间排开,得到时间加频率的二维图:横轴时间,纵轴频率,颜色深浅代表能量强弱。窗短,时间看得准但频率糊;窗长,频率分得细但时间模糊,两头不能全占,这是不确定性原理定死的。窗口长度的选择有讲究,语音常用 20 到 40 毫秒一窗,机械振动看特征频率,经验做法是扫几档窗长对比结果。读图有个直观技巧:横平竖直的能量线是稳态频率,斜线代表频率在漂移。

常用方法对比

  • 短时傅里叶变换:固定窗滑动,实现简单、结果直观,工程里用得最多。
  • 小波变换:窗宽随频率自适应,低频看得细、高频跟得快,适合突变信号。
  • Wigner-Ville 分布:分辨率高,多分量信号会有交叉项干扰,要配核函数压制,初学者容易把交叉项当成真实信号。
  • 同步压缩变换:把模糊的能量脊线重新对齐,图更锐利,计算量也更大。

都用在哪

机械故障诊断里看轴承、齿轮的冲击出现在哪个时刻;语音处理里跟踪共振峰走向;脑电分析里看节律变化;音乐信息检索里做音高跟踪,做音频的还会用它看混响和乐句的频率走向,思路一样。地震勘探、雷达信号处理也是老用户,方向不同套路相通。凡是信号频率本身在漂移、纯频谱图不够用的场景,基本都会轮到它出场。

想自己跑一遍怎么办

Python 用户装 scipy 和 matplotlib 就能起步:读入信号,调用短时傅里叶变换函数,幅度取对数后画热力图,二十行以内能出图。注意采样率参数要和原始数据一致,不然时间轴全错。测试数据别用太大的文件,几千到几十万个采样点起步正合适。先把 STFT 的窗口长度和重叠率玩明白,再谈小波。

上手顺序建议:先用短时傅里叶变换出一版热力图,能看到想要的特征就停手。图画出来记得标横纵轴单位和窗参数,回头对比才有意义,看不懂的图等于白算。