📄 mytraining.m
字号:
function [w,error ]= mytraining(x,h,gaussian,learning,mode,center,variance)
%
[fnum dnum]= size(gaussian);
w = rand(fnum,1)*2-1;
oldw=w;
for i=1:100 % 100 epoches
for j=1:dnum
temp = gaussian(:,j).*w;
aoutput = sum(temp);
err(j) = abs((h(j)-aoutput))^2;
%on-line
if mode == 1
w = w+learning*(h(j)-aoutput)*gaussian(:,j);
end
%batch
if mode == 2
del(:,j) = learning*(h(j)-aoutput)*gaussian(:,j);
end
end
%batch mode
if mode == 2
w = w +sum(del')'/dnum;
end
error(i)=sum(err);
end
error = error/dnum;
for i=1:fnum
gay(i,:) = gaussian(i,:)*w(i);
end
sumgay = sum(gay);
if mode ==1
a = 'On-line';
end
if mode ==2
a = 'Batch';
end
g = num2str(fnum-1);
l = num2str(learning);
%title('test');
ss = [g ' groups' '. Learnig rate = ' l '. Training method: ' a '. Error = ' num2str(error(100)) ];
it = 1000;
xxx = [0:1/it:1];
for i=1:fnum-1
gauu(i,:) = exp(-1*(xxx-center(i)).^2/(2*variance));
end
gauu(fnum,:) = ones(1,it+1);
zh = 0.5+0.4*sin(2*pi*xxx);
final = (gauu'*w)';
cgau = zh(round((center)*it));
figure
plot(xxx,final,'b-',x,h,'go',x,sumgay,'ks',center,cgau,'r*',xxx,zh,'k:',xxx,zh-final-0.2,'r:',xxx,zeros(1,it+1)-0.2,'k');
%plot(x,sumgay,x,sumgay,'bx',x,h,'g',x,h,'o',x,h-sumgay-0.2,'r:',x,zeros(1,50)-0.2,'k',ox,oh,'k:');
legend('Approximating function','Sampled points','Approximated points','Centers of bases','Original Sine function','Error');
title(ss);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -