基于BP神经网络的电机故障诊断系统 (MATLAB)
这是一个基于MATLAB开发的电机故障诊断与状态监测模拟系统。该项目利用BP(Back Propagation)神经网络算法,通过分析模拟的电机振动信号,自动识别电机的健康状态。系统涵盖了从信号生成、特征提取、数据预处理到神经网络训练及结果可视化的全过程。
项目简介
本项目旨在构建一个智能化的故障诊断模型,能够识别四种典型的电机状态:正常运行、轴承故障、转子断条以及定子短路。由于实际工业数据获取困难,本项目内置了基于物理机理的信号生成模块,能够自动合成带有特定故障特征的仿真信号。通过提取信号的时域统计特征,并将这些特征输入到BP神经网络中进行训练,从而实现对未知样本的高精度分类。
功能特性
- 多状态信号模拟:基于物理模型自动生成四种电机状态(正常、轴承故障、转子断条、定子短路)的振动信号,包含逼真的噪声干扰。
- 时域特征提取:自动计算信号的10种关键时域统计特征,构建高维特征向量。
- 自动数据预处理:包含特征数据的归一化处理([0, 1]区间)和标签的One-Hot编码转换。
- BP神经网络分类:构建包含单隐含层的前馈神经网络,使用量化共轭梯度法(SCG)进行快速训练。
- 多维度结果评估:提供训练集与测试集的准确率计算。
- 丰富的数据可视化:
* 各类故障原始信号波形对比。
* 神经网络训练误差收敛曲线(MSE)。
* 自定义热力图形式的分类混淆矩阵。
* 基于PCA(主成分分析)的三维特征空间分布图。
系统要求
* Deep Learning Toolbox (Neural Network Toolbox) - 用于构建和训练BP神经网络。
* Statistics and Machine Learning Toolbox - 用于PCA分析和部分统计函数。
使用方法
- 确保MATLAB已正确安装所需的工具箱。
- 打开MATLAB环境,定位到项目所在目录。
- 直接运行主脚本。
- 程序将自动执行数据生成、处理、训练和测试流程,并依次弹出结果图表。
- 控制台将输出训练集和测试集的最终分类准确率。
系统流程与实现逻辑
系统的核心逻辑流程如下,完全对应代码的执行顺序:
1. 环境初始化与数据生成
程序首先清理工作区并设定固定的随机数种子(Seed=42),确保每次运行产生的数据和训练结果可复现。随后调用内置生成函数模拟800个样本(每类200个),采样频率设定为10kHz,每个样本长度为2048个点。
2. 原始信号可视化
系统随机抽取每种状态的一个样本,绘制其时域波形图。这有助于直观理解不同故障类型下的信号特征差异(如轴承故障的冲击成分、转子故障的调制现象)。
3. 特征提取机制
为了降低数据维度并提取有效信息,系统不直接使用原始波形数据进行训练,而是对每个样本计算以下10个时域特征:
- 基础统计量:均值、标准差、均方根值(RMS)、峰值。
- 高阶统计量:偏度(Skewness)、峭度(Kurtosis)。
- 无量纲指标:波形因子、峰值因子、脉冲因子、裕度因子。
4. 数据集划分与预处理
- 归一化:使用最大最小映射(
mapminmax)将所有特征数据缩放到 [0, 1] 范围内,以消除不同特征量纲对网络权重更新的影响。 - 标签编码:将类别标签转换为神经网络专用的One-Hot编码矩阵(例如类别2表示为 [0 1 0 0])。
- 数据集分割:将数据集随机打乱,按照70%作为训练集,30%作为测试集进行划分。
5. BP神经网络构建与训练
系统构建了一个典型的三层前馈神经网络:
- 输入层:10个节点,对应10个时域特征。
- 隐含层:12个节点(设定值),采用Sigmoid型激活函数。
- 输出层:4个节点,对应4种电机状态。
- 训练算法:采用缩放共轭梯度算法(
trainscg),该算法收敛速度快,适合模式识别任务。 - 参数设定:最大迭代1000次,目标误差1e-5,最小梯度1e-6。
6. 模型测试与诊断
利用训练好的网络对独立的测试集数据进行前向预测。根据输出层4个节点中数值最大的节点索引确定预测类别,并将其解码为具体的故障类型。
7. 结果分析与图形展示
- 准确率计算:分别计算并打印训练集和测试集的分类准确率百分比。
- 误差曲线:绘制均方误差(MSE)随迭代次数下降的对数曲线,评估网络收敛情况。
- 混淆矩阵:通过自定义热力图展示真实类别与预测类别的对应关系,便于分析哪类故障容易被误判。
- PCA可视化:利用主成分分析(PCA)将10维特征降维至3维,绘制三维散点图,直观展示各类样本在特征空间中的聚类分离情况。
关键算法实现细节
信号模拟算法
- 正常运行:基频50Hz的正弦波加上白噪声。
- 轴承故障:在基频基础上叠加周期性的衰减指数冲击信号(模拟外圈故障,频率约120Hz)。
- 转子断条:采用调幅(AM)模型,模拟(1±2s)f0边频带效应,表现为载波幅度的周期性波动。
- 定子短路:引入高次谐波(150Hz, 250Hz)并模拟幅值不平衡,以此表征定子绕组不对称引起的气隙磁场畸变。
网络拓扑选择
代码中根据经验公式($sqrt{in+out} + a$)设定隐含层节点数为12,这是一个在特征维数(10)和输出类别(4)之间平衡模型复杂度和拟合能力的数值。
评价指标
系统不仅仅依赖全局准确率,还通过混淆矩阵提供了每个类别的分类详情,以及通过特征空间的可视化(PCA)验证了提取特征的有效性(不同颜色的点簇在空间中分离度越好,代表特征区分度越高)。