基于小波包变换与SVM的旋转机械故障诊断系统
项目简介
本项目是一个基于MATLAB开发的振动信号分析与智能故障诊断平台。系统旨在通过先进的信号处理技术和机器学习算法,对旋转机械(特别是滚动轴承)的健康状态进行识别。项目集成了模拟数据生成、信号预处理、多域特征提取、支持向量机(SVM)分类模型训练以及结果可视化等全流程功能,能够有效区分正常状态与多种故障模式。
功能特性
- 高保真信号模拟:基于物理模型生成包含冲击、调制和噪声的振动信号,模拟这四种状态:正常、内圈故障、外圈故障及滚动体故障。
- 高级信号去噪:结合去趋势项与小波阈值去噪技术,有效滤除背景噪声,保留故障冲击特征。
- 多域特征融合:融合时域统计特征与时频域小波包能量谱,构建高维特征向量,全面描述信号状态。
- 智能模式识别:利用多分类SVM(支持向量机)模型,配合高斯核函数(RBF),实现高精度的故障分类。
- 全方位可视化:提供原始波形、去噪波形、包络谱分析、能量直方图及混淆矩阵等多种图表展示。
系统要求
- MATLAB R2018b 或更高版本
- Signal Processing Toolbox(信号处理工具箱)
- Statistics and Machine Learning Toolbox(统计与机器学习工具箱)
- Wavelet Toolbox(小波工具箱)
核心算法与实现流程
本项目的主程序逻辑严谨地遵循了“数据获取-预处理-特征工程-模式识别-评估展示”的标准数据挖掘流程。以下是各模块的详细算法实现分析:
1. 数据生成与模拟环境
系统首先构建了一个采样频率为12kHz的模拟环境,生成时长为1秒的振动加速度信号。为了保证实验的可复现性,代码中固定了随机数种子。
*
正常状态:由基频正弦波及其谐波与白噪声叠加而成。
*
内圈故障:模拟了特征频率约为160Hz的周期性冲击,并施加了转频调制(模拟故障点随轴旋转的效果)。
*
外圈故障:模拟了特征频率约为105Hz的周期性冲击,无调制效应。
*
滚动体故障:模拟了特征频率约为70Hz的冲击,并施加了保持架频率调制。
- 冲击生成算法:通过辅助函数生成主要冲击成分,采用指数衰减的正弦波模拟系统受到冲击后的阻尼振荡响应,并加入了微小的随机滑移以贴近真实物理场景。
2. 信号预处理
为了从含噪信号中提取有效成分,系统实施了双重预处理策略:
- 去趋势项:消除信号中的直流分量或线性趋势。
- 小波阈值去噪:采用
sym8小波基进行3层分解,利用Rigrsure(无偏似然估计)规则和软阈值策略对高频系数进行处理。该步骤能有效抑制高斯白噪声,突出故障冲击成分。
3. 说明与特征提取
系统构建了一个12维的混合特征向量,输入到分类器中:
- 时频域特征(8维):利用小波包分解(Wavelet Packet Decomposition)技术。
* 选用
db4小波基,将信号进行3层分解,得到8个独立的频带节点。
* 提取每个频带节点的系数并计算其重构能量。
* 对能量特征进行归一化处理,形成能量谱特征向量,反映了不同故障模式下信号能量在频域上的分布差异。
*
均方根值 (RMS):反映振动强度。
*
峭度 (Kurtosis):对早期冲击信号极其敏感,是诊断轴承故障的关键指标。
*
偏度 (Skewness):描述信号幅值分布的对称性。
*
裕度因子 (Margin Factor):峰值与平方根幅值之比,用于检测机械磨损状况。
4. 模型训练与分类
核心分类器采用
支持向量机(SVM),具体实现细节如下:
- 数据集划分:采用留出法(Hold-out),将数据集按70%训练集和30%测试集进行划分。
- 数据标准化:使用Z-score标准化方法对特征矩阵进行处理,消除不同量纲特征之间的尺度差异。
- ECOC框架:针对四分类问题,使用纠错输出编码(Error-Correcting Output Codes)框架,将多分类问题转化为多个二分类问题求解。
- 核函数:选用高斯核(RBF),以处理特征空间中的非线性可分问题。
5. 可视化与诊断报告
系统在运行结束后即时生成两类可视化图表和一份文本报告:
* 对比展示原始时域信号与小波去噪后的信号。
*
包络谱分析:通过希尔伯特变换(Hilbert Transform)提取信号包络并进行FFT变换,直观展示故障特征频率(及其倍频)。图表中还自动标注了理论故障频率线以便对比。
* 绘制小波包能量直方图,展示各频带能量占比。
* 绘制混淆矩阵(Confusion Matrix),详细展示模型在测试集上对每一类故障的预测准确率和误判情况,并计算总体准确率。
- 文本报告:在控制台输出模型训练耗时、测试集准确率,并抽取一个测试样本输出其真实状态与预测结果的对比判定。
使用方法
- 打开MATLAB软件,将工作路径切换至项目所在文件夹。
- 直接运行主函数脚本(通常命名为
main)。 - 程序将自动开始生成数据、提取特征并训练模型。
- 等待控制台输出“SVM训练完成”字样,随后系统会弹出两个可视化窗口展示分析结果。
- 在MATLAB命令窗口中查看详细的诊断准确率和单样本测试报告。