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

📄 一维非线性.txt

📁 精心打造面向matlab的BP神经网络的设计
💻 TXT
字号:
clear
global q r1 r2 pai I1 I2
pai=3.1415926;
q=5;          %网络泛化参数
r1=71;        %X1轴上的节点数
d0=1;         %初始覆盖偏移向量
n=1; 
sample1=5;
sample2=3;
minx1=0;
maxx1=360;

%覆盖偏移向量
for i=1:q
     d(1,i)=d0*i;
end

%计算基函数的数目
p=0;
for j=1:q
    p=p+(ceil((r1+1-d(1,j))/q)+1);
end

%初始化权值向量
for i=1:p
     w(j)=0;
end

%设置输入轴的节点
for i=1:r1+2
    knot1(i)=5*(i-1);
end

%训练样本
for i=1:maxx1/sample1
    input1(i)=sample1*(i-1)+5;
end

time=0;   %训练次数
while(1)
      time=time+1
      s=0;

      for m=1:maxx1/sample1-1
     
          s=s+1;
          x1(s)=input1(m);
          t(s)=s;
          %计算输入轴子区间的索引数
          for i=1:r1+1
             if x1(s)>=knot1(i)&x1(s)<knot1(i+1)
        I1=i;
     end
end

%计算非零基函数的地址
for j=1:q
add=0;
for k=1:j-1
  add=add+(ceils((r1+1-d(1,k))/q)+1);

 end
ad(s,j)=add+ceils((I1-d(1,j)+q)/q);
 end

%计算网络输出
 for j=1:q
   a(ad(s,j))=1/q;
 end
 y(s)=0;
for j=1:q
y(s)=y(s)+w(ad(s,j))*a(ad(s,j));
end

%计算网络训练误差
yt(s)=sin(x1(s)*pai/180);
e(s)=yt(s)-y(s);

%更新网络权值
  for j=1:q
  dw(ad(s,j))=e(s)*a*(ad(s,j));
  w(ad(s,j))=w(ad(s,j))+dw(ad(s,j));
 end
end

 err(time)=0
 for i=1:s
   err(time)=err(time)+e(j)^2;
 end
 err(time)=err(time)/s;
 err(time)=sqrt(err(time))

 maxe=abs(e(1));
 for j=1:s-1
   if abs(e(j+1))>=maxe
      maxe=abs(e(j+1));
      num=j+1;
    end
end

 if time>=15 break;
 end
 end
 plot(t,yt,'b',t,y,'r')
 time=time+1;

 %网络工作情况
 for i=1:maxx1/sample2
    input1(i)=sample2*(i-1)+5;
 end
 
 s=0;
  
    for m=1:maxx1/sample2-1

      s=s+1;
      x1(s)=input1(m);
      t(s)=s;
        for i=1:r1+1
           if x1(s)>=knot1(i)&x1(s)<knot1(i+1)
         I1=i;
      end
 end
 for j=1:q
 add=0;
 for k=1:j-1
   add=add+(ceils((r1+1-d(1,k))/q)+1);

 end
 ad(s,j)=add+ceils((I1-d(1,j)+q)/q);
 end

 for i=1:q
   a(ad(s,j))=1/q;
 end

 y(s)=0;
 for j=1:q
 
 y(s)=y(s)+w(ad(s,j))*a(ad(s,j));
 end

 yt(s)=sin(x1(s)*pai/180);
 e(s)=yt(s)-y(s);

 end
 err(time)=0;
 for j=1:s
  err(time)=err(time)+e(j)^2;
 end

 err(timen)=err(time)/s;
 err(timen)=sqrt(err(time))

 maxe=abs(e(1))
 for j=1:s-1
    if abs(e(j+1))>=maxe
       maxe=abs(e(j+1));
       num=j+1;
    end
  end
plot(t.yt,'b',t,y,'r')

⌨️ 快捷键说明

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