数学建模社区-数学中国
标题:
BP神经网络MATLAB
[打印本页]
作者:
ppbear321
时间:
2009-8-12 13:23
标题:
BP神经网络MATLAB
clear;clc;
X = [0:0.1:1]; %样本点
N = length(X);
Nr = 6; %隐层节点数
T=exp(X)+X.^2+sin(X); %逼近的函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算中心矢量
a = 0.2;
c = randn(1,Nr);
for k =1:N
d = (X(k)*ones(1,Nr)-c).^2;
[m,I]=min(d);
c1 = c;
c1(I) = c(I)+a*[X(k)-c(I)];
c = c1;
a = a/(1+sqrt(k/Nr));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算方差
deta = zeros(1,Nr);
for k=1:N
deta = deta + (X(k)*ones(1,Nr)-c).^2;
end
deta = deta/N;
%%%% 权值迭代
R = zeros(1,Nr);
W0 = 0.2*randn(1,Nr);
dww = 1;
a2 = 0.4; % 更新步长
n2 = 0; % 迭代次数
while dww>0.001
W = W0;
y = zeros(1,N);
for k =1:N
R = exp(-(X(k)*ones(1,Nr)-c).^2./(2*deta));
y(k) = W*R'; % 输出
dW = a2*(T(k)-y(k))*R;
W = W+dW; % 更新权值
end
dww = norm(W-W0);
n2 = n2+1;
W0 = W;
dE = 0;
for k =1:N
dE = dE+1/2*(T(k)-y(k))^2;
end
E(n2) = dE;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 测试
t1 = [0:0.1:1];
Yout1 =zeros(1,N);
for i =1:N
R = exp(-(t1(i)*ones(1,Nr)-c).^2./(2*deta));
Yout1(i) = W*R';
end
t2 = [0:0.05:1];
Yout2 =zeros(1,length(t2));
for i =1:length(t2)
R = exp(-(t2(i)*ones(1,Nr)-c).^2./(2*deta));
Yout2(i) = W*R';
end
figure(1);
plot(t1,Yout1,'b-',t2,Yout2,'r+',X,T,'g-');
作者:
东方明珠-WDZYQ
时间:
2009-8-12 16:02
谢谢啦,用过的
作者:
linhong33
时间:
2009-8-18 15:39
没看懂 新手 望前辈指教
作者:
hxlovellysys
时间:
2009-8-23 13:31
不错,挺好
作者:
zengtao880724
时间:
2009-8-26 15:44
好东西哦,继续~
作者:
civilstar
时间:
2010-3-25 10:07
不错,很好的东西,感谢分享。。。。。
作者:
zhanglincumt
时间:
2011-4-30 08:13
不错的东西啊
作者:
海之舟
时间:
2011-12-18 20:16
求教如何使用?
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5