💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🔊博主简介:985研究生,Matlab领域科研开发者;
🚅座右铭:行百里者,半于九十。
🏆代码获取方式:
优快云 Matlab武动乾坤—代码获取方式
更多Matlab信号处理仿真内容点击👇
①Matlab信号处理(进阶版)
⛳️关注优快云 Matlab武动乾坤,更多资源等你来!!
⛄一、小波包神经网络和D-S理论的滚动轴承故障诊断(含论文)
通过故障诊断与容错控制课程的学习,我了解了非常多实用的故障检测、分类方法,本次课程作业针对滚动轴承这种非平稳振动信号采用的小波包分解的方法来检测故障的存在,运用神经网络来实现故障的分类,还结合D-S理论融合了多个传感器的诊断结果,提高了故障诊断的准确性并通过实验仿真证实。通过对比单一传感器的诊断结果和本次课程设计中采用方法的诊断结果,可以看出基于小波包神经网络和D-S理论的滚动轴承故障诊断方法能够提高滚动轴承故障诊断的准确率。
基于小波包变换的故障特征向量构造方法对滚动轴承时变、冲击信号的处理非常有效。小波包分解的得到的频段能量分布表征着滚动轴承不同的故障类型,通过检测各频段相对能量的变化可以有效地了解滚动轴承的运行状态。所以,可以采用小波包频段能量参数构建故障特征向量。
神经网络具有很好的自学习能力。它将小波包频段能量参数构建的故障特征向量作为输入,真实的故障状态作为输出,进而实现了对故障的分类。
最后,为表征和融合决策级的不确定性,采用了D-S证据理论。这种理论中定义的置信函数和似然函数,对信息的非精确和狭义不确定等认知方面的表示、度量、和处理比概率论更加灵活、有效。本文应用了这一理论,首先统计先验信息获得混淆矩阵进而构建出识别框架并完成基本概率赋值,然后利用给定的组合规则进行证据的融合,最终给出决策结果。
仿真的结果验证了这种诊断方法是有效性的并且具有更好的诊断效果。
⛄二、部分源代码
%% 这是最后的测试程序,请先执行FocalElement.m
%FocalElement
load test_DE, load test_FE, load test_BA
StandT_DE = FocalEle(test_DE);
StandT_FE = FocalEle(test_FE);
StandT_BA = FocalEle(test_BA);
[~,s2] = size(StandT_DE);
DS_Y(1:5,1:s2) = 0;
DS_DE(1:5,1:s2) =0; DS_FE(1:5,1:s2) =0; DS_BA(1:5,1:s2) =0;
for ii = 1:s2
temp_DE = StandT_DE(:,ii); temp_FE = StandT_FE(:,ii); temp_BA = StandT_BA(:,ii);
temp_DE = temp_DE.*LocalBel_DE./sum(temp_DE.*LocalBel_DE);
temp_FE = temp_FE.*LocalBel_FE./sum(temp_FE.*LocalBel_FE);
temp_BA = temp_BA.*LocalBel_BA./sum(temp_BA.*LocalBel_BA);
temp_DE = [CorrectRate_DE*temp_DE;1-CorrectRate_DE];
temp_FE = [CorrectRate_FE*temp_FE;1-CorrectRate_FE];
temp_BA = [CorrectRate_BA*temp_BA;1-CorrectRate_BA];
DS_DE(:,ii) = temp_DE; DS_FE(:,ii) = temp_FE; DS_BA(:,ii) = temp_BA;
% K1 = sum(temp_DE.*temp_FE.*temp_BA);
% K2 = sum(temp_DE(1:4).*temp_FE(1:4))*temp_BA(5);
% K3 = sum(temp_DE(1:4).*temp_BA(1:4))*temp_FE(5);
% K4 = sum(temp_FE(1:4).*temp_BA(1:4))*temp_DE(5);
% K5 = sum(temp_DE(1:4))*temp_FE(5)*temp_BA(5);
% K6 = sum(temp_FE(1:4))*temp_DE(5)*temp_BA(5);
% K7 = sum(temp_BA(1:4))*temp_DE(5)*temp_FE(5);
% K = K1+K2+K3+K4+K5+K6+K7;
K(1:5) = 0;
for jj = 1:4
K(jj) = temp_DE(jj)*temp_FE(jj)*temp_BA(jj)+temp_DE(jj)*temp_FE(jj)*temp_BA(5)+ …
temp_DE(jj)*temp_FE(5)*temp_BA(jj)+temp_DE(jj)*temp_FE(5)*temp_BA(5)+ …
temp_DE(5)*temp_FE(jj)*temp_BA(jj)+temp_DE(5)*temp_FE(jj)*temp_BA(5)+ …
temp_DE(5)*temp_FE(5)*temp_BA(jj);
end
K(5) = temp_DE(5)*temp_FE(5)*temp_BA(5);
KK = sum(K);
DS_Y(:,ii) = K./KK;
end
[Index_DS,testRate_DS] = hitNum(DS_Y);
[Index_DE,testRate_DE] = hitNum(DS_DE);
[Index_FE,testRate_FE] = hitNum(DS_FE);
[Index_BA,testRate_BA] = hitNum(DS_BA);
figure(1)
t = 1:s2;
scatter(t,Index_DS)
xlabel(‘DS测试集样本’); ylabel(‘DS融合后类别标签’)
figure(2)
scatter(t,Index_DE)
xlabel(‘DE测试集样本’); ylabel(‘类别标签’)
figure(3)
scatter(t,Index_FE)
xlabel(‘FE测试集样本’); ylabel(‘类别标签’)
figure(4)
scatter(t,Index_BA)
xlabel(‘BA测试集样本’); ylabel(‘类别标签’)
function StandY = FocalEle(Y)
[~,s2] = size(Y);
StandY(1:4,1:s2) = 0;
for ii = 1:s2
temp = Y(:,ii);
ymin = min(temp); ymax = max(temp);
temp = (temp-ymin)./(ymax-ymin);
temp = temp./sum(temp);
temp = 0.05+0.9temp;
StandY(:,ii) = temp;
end
end
%statistics
function [Num,CorrectRate] = statistics(Y)
Num(1:4,1:4) = 0;
[~,s2] = size(Y); %行数、列数
Index(1:s2) = 0;
for ii = 1:s2/10
[~,Index(ii)] = max(Y(:,ii));
if Index(ii) == 1
Num(1,1) = Num(1,1)+1;
elseif Index(ii) == 2
Num(1,2) = Num(1,2)+1;
elseif Index(ii) == 3
Num(1,3) = Num(1,3)+1;
elseif Index(ii) == 4
Num(1,4) = Num(1,4)+1;
end
end
for ii = s2/10+1:s2/104
[~,Index(ii)] = max(Y(:,ii));
if Index(ii) == 1
Num(2,1) = Num(2,1)+1;
elseif Index(ii) == 2
Num(2,2) = Num(2,2)+1;
elseif Index(ii) == 3
Num(2,3) = Num(2,3)+1;
elseif Index(ii) == 4
Num(2,4) = Num(2,4)+1;
end
end
for ii = s2/104+1:s2/107
[~,Index(ii)] = max(Y(:,ii));
if Index(ii) == 1
Num(3,1) = Num(3,1)+1;
elseif Index(ii) == 2
Num(3,2) = Num(3,2)+1;
elseif Index(ii) == 3
Num(3,3) = Num(3,3)+1;
elseif Index(ii) == 4
Num(3,4) = Num(3,4)+1;
end
end
for ii = s2/10*7+1:s2
[~,Index(ii)] = max(Y(:,ii));
if Index(ii) == 1
Num(4,1) = Num(4,1)+1;
elseif Index(ii) == 2
Num(4,2) = Num(4,2)+1;
elseif Index(ii) == 3
Num(4,3) = Num(4,3)+1;
elseif Index(ii) == 4
Num(4,4) = Num(4,4)+1;
end
end
Num = Num./([0.1;0.3;0.3;0.3]*s2);
CorrectRate = (Num(1,1)+Num(2,2)+Num(3,3)+Num(4,4))/4;
end
function [Index,CorrectRate] = hitNum(Y)
[~,s2] = size(Y); %行数、列数
TT(1:4,1:s2) = 0; %初始化一个测试集输出矩阵
TT(1,1:s2/10) = 1; %正常对应的输出向量 1 0 0 0
TT(2,s2/10+1:s2/104) = 1; %滚动体故障对应的输出向量 0 1 0 0
TT(3,s2/104:s2/107) = 1; %内圈故障对应的输出向量 0 0 1 0
TT(4,s2/107:s2) = 1; %外圈故障对应的输出向量 0 0 0 1
Num = 0;
Index(1:s2) = 0; Index_T(1:s2) = 0;
for ii = 1:s2
[~,Index(ii)] = max(Y(:,ii));
[~,Index_T(ii)] = max(TT(:,ii));
if(Index(ii) == Index_T(ii))
Num = Num+1;
end
end
CorrectRate = Num/s2;
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]罗耀华,从静.基于matlab BP神经网络的三相逆变器故障诊断[J].应用科技.2010年6月.
[2] 贺红林,封立耀等.基于神经元网络的滚动轴承诊断系统设计.机床与液压
2004,No.11.
[3]周瑞峰.滚动轴承故障智能诊断方法的研究与实现.大连理工大学,2009.
[4]陈进.机械设备振动监测与故障诊断. 上海: 上海交通大学出版社.1999.
[5]梅宏斌.滚动轴承振动监测与诊断[M].北京:机械工业出版社,1995.
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合