📄 rbf_nn.m
字号:
clc
clear all
close all
epoch=1000;
learn=0.5;
hidden_units=10;
sigma=1;
rand('seed',123456);
x=(-10:1:10);
% m=[-8 -4 0 4 8]; %% 5
% m=[-8 -5 -2 0 2 5 8]; %% 7
% m=[-10 -8 -5 -2 0 2 5 8 10]; %% 9
m=[-10 -8 -7 -6 -4 -2 0 2 4 6 7 8 10]; %% 13
% m=[-10 -9 -8 -7 -6 -4 -3 -2 -1 0 1 2 3 4 6 7 8 9 10]; %% 19
% aa=-10:20/hidden_units:10;
% m=[aa]; %% 25
y=0.5.*(x.^3)-0.2.*(x.^2)-3.*x+20;
d=((y-(-470))/(470-(-470)))*0.6+0.2;
b=1;
woh=0.5*rands(hidden_units,1);
for l=1:epoch
for j=1:hidden_units
for i=1:21
phi(i,j)=exp(-(norm(x(:,i)-m(:,j))^2)/(2*sigma^2));
rr(i,j)=x(:,i)-m(:,j);
end
end
phi1=woh'*phi';
bb=b*ones(1,21);
F=phi1+bb;
h1=ones(1,hidden_units);
delta_woh=mean(learn*(d-F)'*h1.*phi);
woh=woh+delta_woh';
delta_b=mean(learn*(d-F));
b=b+delta_b;
for k=1:hidden_units
ccc=learn*(d-F);
delta_m=mean(ccc.*woh(k,:).*phi(:,k)'.*(1/(sigma^2)).*(rr(:,k))');
m=m+delta_m;
delta_sigma=mean(ccc.*woh(k,:).*phi(:,k)'.*(1/(sigma^3)).*(rr(:,k).^2)');
sigma1=sigma*ones(1,hidden_units);
sigma1=sigma1+delta_sigma;
sigma=mean(sigma1);
end
eave(l)=mean((1/2)*(d-F).^2);
end
F_denormalize=(F-0.2)./0.6*940-470;
figure(1)
subplot(311)
plot(eave)
subplot(312)
plot(x,y)
hold on
plot(x,F_denormalize,'g*')
subplot(313)
plot(x,phi)
disp('Eave(end) =')
disp(eave(end))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -