news 2026/5/12 0:54:57

模糊神经网络机械故障诊断(MATLAB代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模糊神经网络机械故障诊断(MATLAB代码)

效果

用训练好的模糊神经网络对机械故障进行诊断,根据网络的预测值得到机械的技术状态。预测值小于 1.5 时为正常状态,预测值在 1.5~2.5 之间时为曲轴轴承轻微异响,预测值在 2.5~3.5 之间时为曲轴轴承严重异响预测值在 3.5~4.5 之间时为连杆轴承轻微异响,预测值大于 4.5 时为连杆轴承严重异响。

y是真实标签,yt是预测标签

模糊神经网络代码

clear all; %下载数据 load data_fnn; %网络结构 I=9; %输入节点 M=18; %隐含节点 O=1; %输出节点 maxgen=10000; %迭代次数 xite=0.07; %网络学习率 a0=0.3; b0=0.6; Ek=1e-15; %误差 %初始化模糊神经网络参数 p0=a0*ones(M,1);p0_1=p0; p1=a0*ones(M,1);p1_1=p1; p2=a0*ones(M,1);p2_1=p2; p3=a0*ones(M,1);p3_1=p3; p4=a0*ones(M,1);p4_1=p4; p5=a0*ones(M,1);p5_1=p5; p6=a0*ones(M,1);p6_1=p6; p7=a0*ones(M,1);p7_1=p7; p8=a0*ones(M,1);p8_1=p8; p9=a0*ones(M,1);p9_1=p9; %初始化模糊隶属度参数 c=0.8+b0*rands(M,I);c_1=c; b=0.8+b0*rands(M,I);b_1=b; %训练数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %----------------------------------------用训练样本训练模糊神经网络-------------------------------------------- [n,m]=size(input_train); EE=100; p=1; while p<=maxgen && EE>=Ek for k=1:m %m 样本个数 %提取训练样本 x=inputn(:,k); %输入参数模糊化 for i=1:I for j=1:M u(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i)); end end %模糊隶属度计算 for i=1:M w(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i)*u(7,i)*u(8,i)*u(9,i); end addw=sum(w); %输出计算 for i=1:M yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6)+p7_1(i)*x(7)+p8_1(i)*x(8)+p9_1(i)*x(9); end addyw=0; addyw=yi*w'; yn(k)=addyw/addw; e(k)=outputn(k)-yn(k); %系数p修正值计算 d_p=zeros(M,1); for i=1:M d_p(i)=xite*e(k)*w(i)/addw; end %系数b修正值计算 d_b=0*b; for i=1:M for j=1:I d_b(i,j)=xite*e(k)*(yi(i)*addw-addyw)*(x(j)-c(i,j))^2*w(i)/(b(i,j)^2*addw^2); end end %c的修正值计算 d_c=0*c; for i=1:M for j=1:I d_c(i,j)=xite*e(k)*(yi(i)*addw-addyw)*2*(x(j)-c(i,j))*w(i)/(b(i,j)*addw^2); end end %系数修正 p0_1=p0_1+d_p; p1_1=p1_1+d_p*x(1); p2_1=p2_1+d_p*x(2); p3_1=p3_1+d_p*x(3); p4_1=p4_1+d_p*x(4); p5_1=p5_1+d_p*x(5); p6_1=p6_1+d_p*x(6); p7_1=p7_1+d_p*x(7); p8_1=p8_1+d_p*x(8); p9_1=p9_1+d_p*x(9); %隶属度参数修正 b=b+d_b; c=c+d_c; end for k=1:m %m 样本个数 %提取训练样本 x=inputn(:,k); %输入参数模糊化 for i=1:I for j=1:M u(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i)); end end %模糊隶属度计算 for i=1:M w(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i)*u(7,i)*u(8,i)*u(9,i); end addw=sum(w); %输出计算 for i=1:M yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6)+p7_1(i)*x(7)+p8_1(i)*x(8)+p9_1(i)*x(9); end addyw=0; addyw=yi*w'; yn(k)=addyw/addw; end EE=(1/2)*sumsqr(outputn-yn) E(p)=EE; p=p+1; end EE,p y=mapminmax('reverse',yn,outputps) epoch=1:size(E,2); figure plot(epoch,E,'-r'); title('误差变化曲线');xlabel('步数');ylabel('误差'); %----------------------------------------------测试样本网络预测----------------------------------------- %输入数据归一化 inputn_test=mapminmax('apply',input_test,inputps); [n,m]=size(input_test); %网络预测 for k=1:1:m x=inputn_test(:,k); %输入参数模糊化 for i=1:I for j=1:M u(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i)); end end %模糊隶属度计算 for i=1:M w(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i)*u(7,i)*u(8,i)*u(9,i); end addw=sum(w); %输出计算 for i=1:M yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6)+p7_1(i)*x(7)+p8_1(i)*x(8)+p9_1(i)*x(9); end addyw=0; addyw=yi*w'; %网络预测值 ytn(k)=addyw/addw; end %预测值反归一化 yt=mapminmax('reverse',ytn,outputps) #代码:https://mbd.pub/o/bread/mbd-ZJyTmZZw
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 0:34:27

【课程设计/毕业设计】基于NodeJS大学生二手交易平台基于nodejs的校园二手市场的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/9 18:48:26

【c++】glibc内存管理

glibc 的内存分配器&#xff08;Allocator&#xff09;主要基于 ptmalloc2&#xff08;Doug Lea’s malloc 的多线程优化版&#xff09;。 这是一个非常复杂且高度优化的系统。将从核心数据结构、Malloc 的分配流程、Free 的释放流程三个维度深入。 Glibc 内存管理深度解析 (p…

作者头像 李华
网站建设 2026/5/9 7:03:53

社会网络仿真软件:UCINET_(16).案例研究与应用实践

案例研究与应用实践 在上一节中&#xff0c;我们已经了解了如何使用UCINET的基本功能进行社会网络分析。本节将通过具体的案例研究和应用实践&#xff0c;进一步深入探讨UCINET在社会网络仿真中的应用。我们将从多个角度出发&#xff0c;包括数据准备、网络可视化、网络测量与…

作者头像 李华