第一讲:课程导论——FFT频谱分析基础、CNN分类原理与项目概览

各位同学好,我是你们这门课的主讲。在信号处理这个行当摸爬滚打了十几年,我越来越觉得——频谱分析 + 深度学习,这组合简直是工业界的黄金搭档。

今天这第一讲,咱们不急着写代码。先聊聊为什么要学这门课,以及你将会做出什么东西

1.1 为什么是FFT?为什么是CNN?

先问大家一个问题:
你拿到一段振动信号,怎么判断机器有没有故障?
你拿到一段语音,怎么识别是谁在说话?

传统做法是:
先做FFT,把时域信号变成频域。然后人工提取特征——峰值频率、能量分布、谐波结构……最后扔给SVM或者随机森林去分类。

但这里有个坑。
人工特征提取,太依赖经验了。
我记得刚入行那会儿,为了区分两种轴承故障,我花了整整两周调特征参数。结果换个工况,全废了。

后来我尝试用CNN直接对频谱图做分类。
效果出奇的好。
说白了,CNN擅长从图像里自动学特征。你把FFT结果当成一张“频谱图”喂给它,它自己就能找到那些你肉眼看不出来的模式。

核心思想:

  • FFT:把信号从时域变到频域,暴露隐藏的频率成分
  • CNN:自动学习频谱图中的判别性特征
  • 两者结合:端到端的智能诊断/识别系统

1.2 FFT频谱分析基础——你得知道这些

FFT不是魔法,它只是DFT的快速算法。
但很多初学者容易忽略几个关键点。

第一,采样率决定一切。
根据奈奎斯特定理,你的采样率必须大于信号最高频率的两倍。
我见过一个项目,有人用100Hz采样率去分析50Hz的信号,结果频谱混叠得一塌糊涂。嗯,那是个惨痛的教训。

第二,频谱分辨率取决于采样时长。
分辨率 = 采样率 / FFT点数。
你想分辨两个靠得很近的频率?那就得采足够长的时间。

第三,加窗很重要。
直接对截断信号做FFT,会产生频谱泄漏。
我个人习惯用汉宁窗,大部分场景下表现均衡。

小技巧:

做频谱分析时,先不加窗看一遍,再加窗看一遍。对比一下,你就能直观感受到“泄漏”长什么样。

1.3 CNN分类原理——别被“深度学习”吓到

CNN说白了就是:
用一堆卷积核在图像上滑动,提取局部特征。

它的核心组件就这几个:

组件 作用 我的经验
卷积层 提取边缘、纹理等局部模式 核大小3×3最常用,5×5也行
池化层 降维,保留主要特征 最大池化比平均池化更鲁棒
全连接层 综合全局特征做分类 别太多层,容易过拟合
激活函数 引入非线性 ReLU是默认选择

你可能会问:
“为什么CNN能用在频谱图上?”

原因很简单。
频谱图本质上是一张二维图像——横轴是频率,纵轴是时间(或者幅值),颜色深浅代表能量大小。
CNN在图像分类上的能力,直接迁移过来就行。

注意:

千万别把原始时域信号直接扔给CNN。我试过,效果很差。
一定要先做FFT,把信号变成频域表示。这是经验之谈。

1.4 课程目标——学完你能做什么?

这门课不是纯理论课。
我的目标是:学完30讲,你能独立完成一个完整的FFT频谱特征CNN分类项目。

具体来说:

  1. 掌握FFT频谱分析的核心技能——采样、加窗、分辨率、频谱图绘制
  2. 理解CNN分类的基本原理——卷积、池化、全连接、训练流程
  3. 能搭建完整的分类流水线——从信号采集到模型部署
  4. 学会调优和避坑——过拟合、数据不平衡、模型轻量化

一句话总结:

给你一段振动信号或语音信号,你能用FFT+CNN自动识别出它的类别。这就是这门课的价值。

1.5 项目概览——我们要做什么?

整个课程围绕一个实战项目展开:
基于FFT频谱特征的滚动轴承故障分类

数据集是公开的CWRU轴承数据。
包含四种状态:

  • 正常
  • 内圈故障
  • 外圈故障
  • 滚动体故障

我们的流程是这样的:

原始振动信号 → 分段 → FFT → 频谱图 → CNN模型 → 分类结果

每一步我都会带着你手写代码。
从数据加载、预处理,到模型搭建、训练、评估,最后部署成可用的工具。

我记得第一次跑通这个流程时,准确率到了98%以上。
那种感觉,怎么说呢——
就像你亲手造了一台“信号听诊器”,机器哪里坏了,一听就知道。

1.6 你需要准备什么?

技术栈很简单:

工具 版本建议 用途
Python 3.8+ 主编程语言
NumPy 1.21+ 数值计算
SciPy 1.7+ FFT和信号处理
Matplotlib 3.4+ 频谱图可视化
PyTorch 1.10+ 深度学习框架

硬件方面,有GPU最好,没有也能跑。
我早期做实验时就用CPU,一个模型训练十几分钟,喝杯咖啡的功夫。

给新手的建议:

别急着装环境。先跟着第一讲把FFT和CNN的概念理清楚。
代码部分从第二讲开始,我会手把手带你配环境。

1.7 写在最后

这门课不会让你成为理论大师。
但会让你成为一个能动手解决问题的工程师。

我见过太多人,理论背得滚瓜烂熟,一上手就懵。
也见过一些人,代码写得飞起,但连频谱泄漏是什么都不知道。

我希望你学完这门课后,
既能讲清楚原理,也能写出能用的代码。
这才是真正的“实战”。

好,第一讲就到这里。
下一讲,我们开始动手——用Python做FFT频谱分析


公众号:蓝海资料掘金营,微信deep3321