📄 jtrbfnet.m
字号:
function main()
samnum=100;
targetsamnum=101;
indim=1;
unitnum=10;
maxepoch=5000;
E0=0.1;
rand('state',sum(100*clock))
noisevar=0.01;
noise=noisevar*randn(1,samnum);
samin=8*rand(1,samnum)-4;
samoutnonoise=1.1*(1-samin+2*samin.^2).*exp(-samin.^2/2);
samout=samoutnonoise+noise;
targetin=-4:0.08:4;
targetout=1.1*(1-targetin+2*targetin.^2).*exp(-targetin.^2/2);
figure
hold on
grid
plot(samin,samout,'k+')
plot(targetin,targetout,'b-')
xlabel('input x');
ylabel('output y');
center=8*rand(indim,unitnum)-4;
sp=0.2*rand(1,unitnum)+0.1;
w=0.2*rand(1,unitnum)-0.1;
lrcent=0.001;
lrsp=0.001;
lrw=0.001;
errorhistory=[];
for epoch=1:maxepoch
alldist=dist(center',samin);
spmat=repmat(sp',1,samnum);
unitout=radbas(alldist./spmat);
netout=w*unitout;
error=samout-netout;
SSE=sumsqr(error)
errorhistory=[errorhistory SSE];
if SSE<E0,break,end
for i=1:unitnum
centgrad=(samin-repmat(center(:,i),1,samnum))*(error.*unitout(i,:)*w(i)/(sp(i)^2))';
spgrad=alldist(i,:).^2*(error.*unitout(i,:)*w(i)/(sp(i)^3))';
wgrad=error*unitout(i,:)';
center(:,i)=center(:,i)+lrcent*centgrad;
sp(i)=sp(i)+lrsp*spgrad;
w(i)=w(i)+lrw*wgrad;
end
end
testdistance=dist(center',targetin);
testspreadsmat=repmat(sp',1,targetsamnum);
testhiddenunitout=radbas(testdistance./testspreadsmat);
testnnout=w*testhiddenunitout;
plot(targetin,testnnout,'r-')
figure
hold on
grid
[xx,num]=size(errorhistory);
plot(1:num,errorhistory,'r-');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -