凯斯西厨大学轴承数据集轴承故障频率matlab代码
时间: 2025-05-07 17:11:17 浏览: 35
### 凯斯西储大学轴承数据集故障频率分析的MATLAB代码示例
以下是一个基于凯斯西储大学轴承数据集进行故障频率分析的MATLAB代码示例。该代码实现了数据加载、信号处理以及特征频率计算的功能。
#### MATLAB代码实现
```matlab
% 加载凯斯西储大学轴承数据集中的文件
load('CWRU_Data/0_hp/inner_race_07_0_deg.mat'); % 替换为实际的数据路径
% 提取振动信号
vibration_signal = data(:, 2); % 假设第二列为振动信号
fs = 12000; % 采样率 (Hz)
% 计算FFT以获取频谱
N = length(vibration_signal);
frequencies = (0:N-1)*(fs/N); % 频率轴
fft_values = abs(fft(vibration_signal)); % FFT幅值
% 轴承参数设置
fr = 1799 / 60; % 转速 (rps),假设转速为1799 rpm
bpfo = fr * (balls / (balls + 1)) * (1 - cos(theta)); % 外圈故障特征频率
bpfi = fr * (balls / (balls + 1)) * (1 + cos(theta)); % 内圈故障特征频率
bsf = fr * balls * sin(theta); % 滚珠旋转频率
ftf = fr * (1 - cos(theta)) / (balls + 1); % 笼子频率
% 显示特征频率
disp(['外圈故障特征频率 BPFO: ', num2str(bpfo), ' Hz']);
disp(['内圈故障特征频率 BPFI: ', num2str(bpfi), ' Hz']);
disp(['滚珠旋转频率 BSF: ', num2str(bsf), ' Hz']);
disp(['笼子频率 FTF: ', num2str(ftf), ' Hz']);
% 绘制频谱图
figure;
plot(frequencies(1:N/2), fft_values(1:N/2));
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Vibration Signal Spectrum');
grid on;
% 查找频谱中是否存在特征频率
[~, idx_bpfo] = min(abs(frequencies' - bpfo));
[~, idx_bpfi] = min(abs(frequencies' - bpfi));
if fft_values(idx_bpfo) > threshold && fft_values(idx_bpfi) > threshold
disp('检测到轴承内外圈故障!');
else
disp('未检测到明显故障.');
end
```
上述代码展示了如何利用FFT技术提取振动信号的频域特性,并通过比较特定频率分量来判断是否存在轴承故障[^1]。此外,代码还包括了轴承常见故障类型的特征频率计算方法[^2]。
---
### 特征频率计算公式的解释
对于轴承故障特征频率的计算,通常涉及以下几个关键变量:
- **BPFO(Ball Pass Frequency Outer Race)**:
\[
f_{\text{BPFO}} = \frac{n}{2} \cdot f_r \cdot (1 - d/(D \cos(\alpha)))
\]
- **BPFI(Ball Pass Frequency Inner Race)**:
\[
f_{\text{BPFI}} = \frac{n}{2} \cdot f_r \cdot (1 + d/(D \cos(\alpha)))
\]
其中:
- \( n \): 滚珠数量;
- \( f_r \): 主轴转速(单位:Hz);
- \( d \): 滚珠直径;
- \( D \): 轴承节径;
- \( \alpha \): 接触角;
以上公式来源于轴承动力学理论,并广泛应用于故障诊断领域[^3]。
---
### 数据集目录结构解析
凯斯西储大学轴承数据集的典型目录结构如下所示[^4]:
```
CWRU_Data/
├── 0_hp/
│ ├── normal_0_deg.mat
│ ├── inner_race_07_0_deg.mat
│ └── ...
├── 1_hp/
│ ├── normal_0_deg.mat
│ ├── inner_race_07_0_deg.mat
│ └── ...
└── ...
```
每种工况下的`.mat`文件包含了对应的振动信号数据。可以通过`load`函数读取并进一步处理。
---
阅读全文
相关推荐
















