📄 一维非线性.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 + -