基于一维信号频域特征提取的轴承故障诊断与趋势预测

基于一维信号频域特征提取的轴承故障诊断与趋势预测

一、频域特征提取方法

1. 快速傅里叶变换(FFT)

% 轴承振动信号FFT分析
fs = 48000; % 采样频率
N = length(signal);
f = (0:N/2)*fs/N;
fft_val = fft(signal);
P2 = abs(fft_val/N);
P1 = P2(1:N/2+1);
P1(2:end-1) = 2*P1(2:end-1);

% 特征频率计算(示例:外圈故障)
f_outer_race = 0.4*fs/(2*pi); % 假设节径比0.4
[~,idx] = findpeaks(P1, 'SortStr', 'descend', 'NPeaks', 5);
fault_freq = f(idx(1)); % 主特征频率

2. 小波包分解

% 小波包能量特征提取
wpt = wpdec(signal, 4, 'db4');
energy = zeros(1, size(wpt,2));
for i = 1:size(wpt,2)
    energy(i) = sum(wpt.cfs(i,:).^2);
end

% 频带划分(示例:0-2kHz, 2-8kHz)
band_energy = [sum(energy(1:3)), sum(energy(4:7))];

3. 倒频谱分析

% 倒频谱计算
c = cceps(signal);
[~,lag] = max(c(20:end)); % 忽略前20点直流分量
fault_period = lag/fs; % 故障周期估计

二、特征工程与选择

1. 关键频域特征

特征类型 数学表达式 物理意义
峰值频率 f_peak = argmax(P(f)) 主故障频率成分
谐波比 HR = P(2f)/P(f) 故障严重程度指标
频带能量比 E_ratio = E_band/E_total 故障能量集中度
边带间隔 Δf = f_sideband – f_peaks 转频调制特征

2. 特征降维(PCA示例)

% 主成分分析
[coeff,score,latent] = pca(features);
explained = 100*latent/sum(latent);
selected_features = score(:,1:3); % 保留95%方差

三、故障诊断模型

1. 双流CNN架构

layers = [
    imageInputLayer([256 256 2]) % 时频图+频谱图
    
    convolution2dLayer(3,16,'Padding','same')
    batchNormalizationLayer
    reluLayer
    
    maxPooling2dLayer(2,'Stride',2)
    
    convolution2dLayer(3,32,'Padding','same')
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(256)
    reluLayer
    
    classificationLayer];

2. 混合特征输入

% 输入特征矩阵构建
X = [fft_features, wavelet_energy, cepstral_features];
Y = categorical(labels);

% 交叉验证
cv = cvpartition(Y,'KFold',5);
cv_accuracy = zeros(cv.NumTestSets,1);
for i = 1:cv.NumTestSets
    trainIdx = cv.training(i);
    testIdx = cv.test(i);
    model = fitcecoc(X(trainIdx,:),Y(trainIdx));
    cv_accuracy(i) = sum(predict(model,X(testIdx,:)) == Y(testIdx))/numel(Y(testIdx));
end
disp(['平均准确率: ', num2str(mean(cv_accuracy)*100,'%')]);

四、趋势预测方法

1. 基于LSTM的时间序列预测

layers = [ ...
    sequenceInputLayer(3) % 峰值频率、峭度、能量
    
    lstmLayer(64,'OutputMode','sequence')
    dropoutLayer(0.2)
    
    lstmLayer(32)
    dropoutLayer(0.2)
    
    fullyConnectedLayer(1)
    regressionLayer];

options = trainingOptions('adam',...
    'MaxEpochs',100,...
    'MiniBatchSize',32,...
    'InitialLearnRate',0.001);

net = trainNetwork(XTrain,YTrain,layers,options);

2. 剩余使用寿命(RUL)预测

% 基于健康指数曲线拟合
health_index = polyfit(time, features(:,1),2);
RUL = 1./(1 + exp(-(health_index(1)*time + health_index(2))));

相关代码 一维信号频域特征提取可用于轴承故障诊断和趋势预测 www.youwenfan.com/contentcsg/50931.html

五、工程应用案例

1. 滚动轴承故障诊断流程

振动信号采集 → FFT频谱分析 → 小波包能量提取 → 特征选择 → 
双流CNN分类(正常/内圈/外圈/滚动体故障)

2. 趋势预测系统架构

实时数据流 → 滑动窗口处理 → LSTM预测模型 → RUL可视化 → 预警阈值判断

六、关键优化策略

  1. 动态频带划分
    根据转速自适应调整分析频段:

    f_adaptive = [0.2*fn, 0.5*fn, 1.2*fn]; % 基于故障特征频率动态调整
    
  2. 多尺度特征融合
    结合时域(峭度)、频域(频带能量)、时频域(小波熵)特征:

    fused_feature = [kurtosis, energy_ratio, wavelet_entropy];
    
  3. 迁移学习应用
    使用预训练模型(如VGGish)进行特征提取:

    net = alexnet;
    features = activations(net, input_layer, 'fc7', 'OutputAs', 'rows');
    

七、完整代码结构

Bearing_Diagnosis/
├── data/
│   ├── raw_signals.mat      % 原始振动数据
│   └── labels.csv           % 故障标签
├── features/
│   ├── fft_features.m       % FFT特征提取
│   └── wavelet_features.m   % 小波包特征
├── models/
│   ├── cnn_classifier.m     % 双流CNN模型
│   └── lstm_predictor.m     % LSTM预测模型
├── utils/
│   ├── data_loader.m        % 数据加载
│   └── visualization.m      % 结果可视化
└── reports/
    ├── accuracy_report.pdf  % 性能评估
    └── rul_prediction.png   # 趋势预测结果

八、参考文献

  1. 基于小波包能量谱的轴承故障诊断方法(机械工程学报,2021)
  2. 深度学习在旋转机械故障诊断中的应用(IEEE Transactions,2023)
  3. 轴承剩余寿命预测的LSTM网络优化(机械强度,2024)
  4. 频域特征融合的轴承故障分类算法(振动与冲击,2022)

专注于matlab/simulink,电子电路,编程