本项目是Python版本轴承振动信号分析项目的MATLAB重写版,用于学习和理解振动信号处理方法。
bearing_vibration_analysis_MATLAB/
├── config.m # 配置参数设置
├── main.m # 主程序入口
├── src/ # 源代码目录
│ ├── loadVibrationData.m # 数据加载
│ ├── timeDomainAnalysis.m # 时域分析
│ ├── frequencyDomainAnalysis.m # 频域分析
│ ├── filterSignal.m # 滤波处理
│ ├── timeFrequencyAnalysis.m # 时频分析
│ ├── spectralKurtosis.m # 谱峭度分析
│ └── envelopeAnalysis.m # 包络分析
├── utils/ # 工具函数
│ ├── bearingParams.m # 轴承参数计算
│ └── plotting.m # 绘图工具
└── outputs/ # 输出目录 (自动创建)
└── figures/ # 图表保存
将 data.txt 文件放置在项目根目录的上一级目录中(与Python版本相同的位置)。
在MATLAB中打开项目目录,运行:
main- 图表保存在
outputs/figures/目录 - 分析报告保存在
outputs/figures/analysis_report.txt
- 数据加载 - 读取振动信号数据,解析元数据
- 时域分析 - 计算RMS、峰值、峭度等时域特征
- 频域分析 - FFT频谱分析,识别主要频率成分
- 滤波处理 - Butterworth带通滤波 (1-10 kHz)
- 时频分析 - CWT和STFT时频谱图
- 谱峭度分析 - Fast Kurtogram,确定最优滤波频带
- 包络分析 - Hilbert变换包络分析,诊断轴承故障
cfg = config();
fs = cfg.SAMPLING_FREQUENCY; % 获取采样频率
bearing = cfg.BEARING; % 获取轴承参数vibData = loadVibrationData(filePath, headerLines, fs);
% 返回结构体包含: time, channels, channelNames, fs, metadatafaultFreqs = bearingParams(bearing, rotationFreq);
% 返回: BPFI, BPFO, BSF, FTFresult = envelopeAnalysis(signal, fs, channelName, faultFreqs, outputDir, filteredSignal);
% 返回: envelope, envelopeFreq, envelopeAmp, faultResults| 频率名称 | 公式 | 说明 |
|---|---|---|
| BPFI | (n/2)×(1+d/D×cosα)×fr | 内圈故障频率 |
| BPFO | (n/2)×(1-d/D×cosα)×fr | 外圈故障频率 |
| BSF | (D/2d)×(1-(d/D×cosα)²)×fr | 滚动体故障频率 |
| FTF | (1/2)×(1-d/D×cosα)×fr | 保持架频率 |
其中:
- n: 滚动体数量
- d: 滚动体直径
- D: 节圆直径
- α: 接触角
- fr: 转频 (Hz)
- MATLAB R2016b 或更高版本
- Signal Processing Toolbox (用于滤波器设计)
- Wavelet Toolbox (可选,用于CWT,没有会使用简化实现)
| 特性 | Python | MATLAB |
|---|---|---|
| 文件组织 | 模块(.py) + init.py | 函数文件(.m) |
| 数据结构 | NumPy数组, dataclass | 矩阵, struct |
| 索引 | 0-based | 1-based |
| 函数定义 | def func(): | function out = func() |
| 返回值 | return | 函数名赋值 |
所有代码使用详细的中文注释,包括:
- 函数说明(功能、参数、返回值)
- 算法原理解释
- 公式说明
- 示例代码
- 从
main.m开始,了解整体流程 - 按顺序阅读各模块代码
- 对照Python版本理解差异
- 修改参数观察结果变化
- 《滚动轴承故障诊断实用技术》
- MATLAB Signal Processing Toolbox 文档
- MATLAB Wavelet Toolbox 文档