⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp1.m

📁 使用matlab 中最基本的语言实现的BP神经元网络算法
💻 M
字号:
%//////////初始化///////// 
clear all 
close all 

IN=2;H=10;Out=1; 
l=-3:0.01:3;
len=length(l);
wi=0.5*rands(H,IN); 

wo=0.5*rands(Out,H); 

wi_2=wi;wi_1=wi;wo_2=wo;wo_1=wo; 



u_1=0; 
y_1=0;

a=0.3; 

ts=1; 

temp=0; 


for k=1:1:len
   %//////网络的正向推理//////// 
   u(k)=0.75*sin(6*pi*l(k)); 
   time(k)=k*ts; 
    

   y(k)=u(k)*u(k)*u(k)+y_1/(2+y_1*y_1); 
   %y(k)=(y_1)/(1+y_1^2)+u_1; 
    
    
   x=[u(k);y_1]; 
    
   I=wi*x; 
    
   for j=1:1:H 
       %xK(j)=1/(1+exp(-I(j)));     
       xK(j)=(1-exp(-I(j)))/(1+exp(-I(j))); 
       dsx(j)=2*exp(-I(j))/((1+exp(-I(j)))^2); 
       %dsx(j)=xK(j)*(1-xK(j)); 
   end 
   ym(k)=xK*wo'; 
   if ym(k)>=0.69 
      ym(k)=0.69; 
   end 
   if ym(k)<=-0.69 
      ym(k)=-0.69; 
   end 
   %/////////////误差计算/////////////// 
   error(k)=((y(k)-ym(k))^2)/2; 
   temp=temp+error(k); 
   E(k)=temp/k; 
  %//////////////反向推理过程//////////// 
   for j=1:1:H 
   for i=1:1:IN 
       dwi(j,i)=-[y(k)-ym(k)]*wo(j)*dsx(j)*x(i); 
   end 
   end 
    
   for j=1:1:H 
       dwo(j)=-[y(k)-ym(k)]*xK(j); 
   end 
  %///////////////权值的修正///////////// 
   wi=wi_1-a*dwi; 
   wo=wo_1-a*dwo;     
   
   y_1=y(k); 
   wi_2=wi_1;wi_1=wi;wo_2=wo_1;wo_1=wo; 
  
  
end 
%///////////曲线u////////////////// 
figure(1); 
plot(time,u,'r'); 
xlabel('time(s)');ylabel('u'); 
%///////////曲线y,ym////////////////// 
figure(2); 
plot(time,y,'r',time,ym,'b'); 
xlabel('time(s)');ylabel('y,ym'); 
%///////////曲线E////////////////// 
figure(3); 
plot(time,E,'r'); 
xlabel('time(s)');ylabel('E');

figure(4); 
plot(u,y,'r',u,ym,'b'); 
xlabel('u');ylabel('y'); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -