基于变分模态分解 (VMD) 与深度学习的旋转机械故障诊断系统
项目简介
本项目实现了一套完整的旋转机械故障诊断系统,旨在解决工业振动信号中强噪声和非平稳特性的分析难题。系统通过MATLAB编写,集成了数据模拟、基于粒子群优化(PSO)的变分模态分解(VMD)、多维度特征提取、t-SNE数据降维可视化以及基于卷积神经网络(CNN)的故障分类模型。该系统能够自动寻找信号分解的最佳参数,提取高敏感度特征,并最终通过深度学习模型实现对正常、内圈故障和外圈故障的精确识别。
系统功能特性
- 多工况信号模拟:内置信号生成器,能够模拟正常运行、内圈故障(调制冲击)和外圈故障(高频冲击)三种工况的振动数据,无需外部数据集即可运行演示。
- 自适应信号分解 (PSO-VMD):利用粒子群算法(PSO)自动寻优VMD的核心参数(模态数 K 和 惩罚因子 Alpha),以最小包络熵为适应度函数,实现信号的最佳降噪与分解。
- 混合特征提取:从时域与频域提取高维特征向量,包括统计指标(如RMS、峭度)、无量纲指标(如波形因子、脉冲因子)以及非线性复杂度指标(近似排列熵)。
- 数据降维可视化:集成 t-SNE 算法,将高维特征映射至二维平面,直观展示不同故障类别的数据聚类效果。
- 深度学习分类:构建轻量级卷积神经网络(CNN),通过卷积层自动提取深层特征并进行模式识别,替代传统机器学习分类器。
- 综合诊断面板 (GUI):运行结束后弹出一个综合图形窗口,实时显示混淆矩阵、样本分类对比图、原始信号波形及最终的文本诊断报告。
系统要求
- MATLAB R2019b 或更高版本
- 必选工具箱:
* Signal Processing Toolbox(用于信号处理与包络谱分析)
* Deep Learning Toolbox(用于构建和训练CNN模型)
* Statistics and Machine Learning Toolbox(用于t-SNE与基础统计功能)
算法实现细节
本节详细说明代码各模块的内部实现逻辑:
1. 数据生成与预处理
系统首先设定采样频率为 2000Hz,采样时长为 1秒。为了演示高效性,针对三种类别各生成 20 个样本:
- 正常信号:由基频正弦波叠加随机高斯白噪声构成。
- 内圈故障:基于调制信号原理,使用正弦载波乘以低频调制波,并叠加周期性衰减冲击信号。
- 外圈故障:模拟高频冲击响应,包含大幅度的周期性指数衰减信号。
数据生成后,系统随机打乱样本顺序,并按 7:3 的比例划分为训练集和测试集。
2. PSO-VMD 参数自适应优化
代码包含一个完整的 PSO 优化器,用于针对特定输入信号寻找最佳 VMD 参数:
- 优化目标:最小化分解后模态分量的包络熵。包络熵越小,代表信号的稀疏性越强,故障冲击特征越明显。
- 参数范围:模态数 K (3~6),惩罚因子 Alpha (1000~3000)。
- 配置:为保证演示速度,设置粒子数为 5,迭代次数为 5。
获取最优参数后,系统调用 VMD 核心算法对信号进行分解,获得本征模态函数(IMFs)。
3. 多维度混合特征提取
系统对每个样本提取由 9 个指标组成的特征向量,经过归一化处理后作为神经网络的输入:
- 均方根值 (RMS):反映振动能量。
- 峭度 (Kurtosis):反映信号冲击特性的敏感指标。
- 偏度 (Skewness):描述幅值分布的不对称性。
- 峰值 (Peak):信号的最大绝对幅值。
- 波形因子 (Shape Factor):RMS与平均幅值之比。
- 脉冲因子 (Impulse Factor):峰值与平均幅值之比。
- 裕度因子 (Margin Factor):峰值与根方幅值之比。
- 重心频率:频域功率谱的加权平均频率。
- 近似熵 (Entropy):衡量信号的时间序列复杂度(代码中通过直方图概率计算简化版熵值)。
4. 深度学习模型架构 (CNN)
虽然项目背景中提及 CNN-LSTM,为保证演示代码的简洁性与收敛稳定性,实际代码实现了一个基于
convolution2dLayer 的
1D-CNN 架构。
- 输入处理:将 9 维特征向量 Reshape 为
[9, 1, 1, N] 的格式以适配图像输入层。 - 网络层级:
1. 输入层
2. 卷积层 (8 filters) -> 批量归一化 (BN) -> ReLU激活
3. 最大池化层 (Max Pooling)
4. 卷积层 (16 filters) -> 批量归一化 (BN) -> ReLU激活
5. 全连接层 (Fully Connected, 输出类别数3)
6. Softmax 层与分类输出层
- 训练配置:使用 Adam 优化器,最大轮数 50,初始学习率 0.005。
5. 结果可视化与评估
系统最后通过一个 2x2 的子图布局展示诊断结果:
- 左上:混淆矩阵 (Confusion Matrix),直观展示每一类的分类准确率。
- 右上:分类结果对比图,将真实标签与预测标签绘制在同一坐标系中,便于观察误判样本。
- 左下:当前正在分析的测试信号的时域波形片段。
- 右下:文本诊断报告,动态显示模型架构信息、测试样本数量及最终的整体准确率。
使用方法
- 直接运行主函数
main。 - 程序将自动执行以下流程:
* 初始化参数并生成模拟数据集。
* 显示 "正在执行 PSO-VMD..." 并输出找到的最佳 K 和 Alpha 值。
* 弹出 VMD 分解效果图。
* 提取特征并尝试绘制 t-SNE 聚类散点图(如果数据量足够且工具箱支持)。
* 开始训练 CNN 网络,命令行不显示详细迭代过程(Verbose=0),但会提示训练完成。
* 最后弹出 "故障诊断系统面板" 窗口展示最终结果。
注意事项
- VMD 算法:代码部分包含了 VMD 算法的核心逻辑(基于 Dragomiretskiy & Zosso, 2014 的原理),采用了镜像延拓和频域迭代更新的方式。
- 数据量:默认生成的样本数较少(每类20个),主要用于验证算法流程和代码逻辑。在实际工业应用中,建议大幅增加样本数量以提高深度学习模型的泛化能力。
- 特征归一化:代码中使用了
mapminmax 对特征进行了 [0, 1] 归一化,这对神经网络的收敛至关重要。