离散韦格纳分布(Discrete Wigner-Ville Distribution,DWVD)作为时频分析领域的重要工具,在旋转机械故障诊断中展现出独特优势。与传统的短时傅里叶变换(STFT)相比,DWVD通过直接计算信号的自相关函数,无需加窗处理,从根本上避免了时间分辨率与频率分辨率之间的权衡问题。其数学表达式为:
code复制WVD(t,f) = ∫ x(t+τ/2)·x*(t-τ/2)·e^(-j2πfτ) dτ
其中x(t)为原始信号,x*(t)为其复共轭。这种双线性变换的特性使得DWVD在分析非平稳信号时,能够实现理论上最优的时频聚集性。
在轴承故障诊断场景中,当滚动体或滚道出现局部损伤时,会产生周期性的冲击振动信号。这些冲击在时频域表现为:
注意:DWVD虽然具有优异的时频分辨率,但存在交叉项干扰问题。实际应用中需配合适当的预处理(如信号分解)或后处理(如平滑滤波)来抑制伪影。
DVMLSTM网络采用三级特征提取架构:
前端特征增强层:DWVD时频变换
空间特征提取层:改进型多尺度CNN(MCNN)
时序建模层:双向LSTM
传统CNN在轴承故障诊断中面临两个主要挑战:
MCNN通过以下创新解决这些问题:
python复制# 示例代码片段
branch1 = Conv2D(filters=32, kernel_size=7, dilation_rate=3)(input)
branch2 = Conv2D(filters=32, kernel_size=5, dilation_rate=2)(input)
branch3 = Conv2D(filters=32, kernel_size=3, dilation_rate=1)(input)
使用CWRU轴承数据集时的标准处理流程:
关键技巧:在DWVD变换前,建议先进行带通滤波(1kHz-5kHz)以突出故障特征频段。
| 参数类别 | 具体设置 | 选择依据 |
|---|---|---|
| 优化器 | AdamW | 适合非平稳目标函数 |
| 初始学习率 | 3e-4 | 实验调优结果 |
| 批量大小 | 32 | GPU显存限制 |
| 早停策略 | 验证损失连续5轮不下降 | 防止过拟合 |
| 正则化 | Label Smoothing (α=0.1) | 提升模型泛化能力 |
采用改进的加权交叉熵损失:
code复制L = -∑ w_i·y_i·log(p_i)
其中权重系数w_i根据类别频率动态调整:
matlab复制% MATLAB示例计算
class_weights = 1./histcounts(labels)/numel(unique(labels));
图1展示了正常轴承与内圈故障的DWVD时频图差异:
在CWRU测试集上的评估结果:
| 模型 | 准确率 | 召回率 | F1-score |
|---|---|---|---|
| 传统SVM | 82.3% | 80.1% | 81.2% |
| 普通CNN | 89.7% | 88.5% | 89.1% |
| 本文DVMLSTM | 96.2% | 95.8% | 96.0% |
图2显示经过DVMLSTM处理后的特征空间分布:
实时性优化:
抗干扰措施:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 分类结果波动大 | 信号分段不同步 | 添加峰值同步切割算法 |
| 新设备上准确率下降 | 域偏移问题 | 加入微调(Fine-tuning) |
| DWVD图像模糊 | 频率分辨率不足 | 增加FFT点数至2048 |
matlab复制function [tfr] = dwvd(x, N)
L = length(x);
tfr = zeros(N, L);
for n = 1:L
tau = -min([n-1,L-n,round(N/2)-1]):min([n-1,L-n,round(N/2)-1]);
indices = rem(N + tau, N) + 1;
tfr(indices,n) = x(n+tau) .* conj(x(n-tau));
end
tfr = fft(tfr);
end
python复制# PyTorch实现示例
class MCNN_LSTM(nn.Module):
def __init__(self):
super().__init__()
# 多尺度卷积分支
self.branch1 = nn.Sequential(
nn.Conv2d(1, 32, 7, dilation=2),
nn.BatchNorm2d(32),
nn.ReLU())
self.branch2 = nn.Sequential(
nn.Conv2d(1, 32, 5),
nn.BatchNorm2d(32),
nn.ReLU())
# 特征融合与LSTM
self.fusion = nn.Conv2d(64, 128, 1)
self.lstm = nn.LSTM(input_size=128, hidden_size=64, bidirectional=True)
def forward(self, x):
x1 = self.branch1(x)
x2 = self.branch2(x)
x = torch.cat([x1,x2], dim=1)
x = self.fusion(x)
# 时空特征转换
b, c, h, w = x.shape
x = x.permute(3, 0, 1, 2).flatten(2)
x, _ = self.lstm(x)
return x[-1]
在工业现场部署时发现,当设备转速波动超过±5%时,传统方法诊断准确率会显著下降。而DVMLSTM模型由于具有时频分析和时序建模的双重优势,在变转速工况下仍能保持92%以上的识别准确率。这得益于DWVD对瞬时频率变化的捕捉能力,以及LSTM对时序模式的动态适应特性。