gusucode.com > 《MATLAB神经网络超级学习手册》随书光盘源码程序 > code/15/N15_4.m

    clear all
clc
P=[4 5 6];
T=[1.5 3.6 6.7];
net=newgrnn(P,T);
%仿真验证
p=4.5;
v=sim(net,p)
%PNN网络,概率神经网络
P=[0 0 ;1 1;0 3;1 4;3 1;4 1;4 3]';
Tc=[1 1 2 2 3 3 3];
%将期望输出通过ind2vec()转换,并设计、验证网络
T=ind2vec(Tc);
net=newpnn(P,T);
Y=sim(net,P);
Yc=vec2ind(Y)
%尝试用其他的输入向量验证网络
P2=[1 4;0 1;5 2]';
Y=sim(net,P2);
Yc=vec2ind(Y)
%应用newrb()函数构建径向基网络,对一系列数据点进行函数逼近
P=-1:0.1:1;
T=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
0.1336 -0.2013 -0.4344 -0.500 -0.3930 -0.1647 -0.0988...
0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];
%绘制训练用样本的数据点
plot(P,T,'r*');
title('训练样本');
xlabel('输入向量P');
ylabel('目标向量T');
%绘制隐层神经元径向基传递函数的曲线
p=-3:.1:3;
a=radbas(p);
plot(p,a)
title('径向基传递函数')
xlabel('输入向量p')
%应用newrb()函数构建径向基网络的时候,可以预先设定均方差精度eg以及散布常数sc
eg=0.02;
sc=1;   %其值的选取与最终网络的效果有很大关系,过小造成过适性,过大造成重叠性
net=newrb(P,T,eg,sc);
%网络测试
plot(P,T,'*')
xlabel('输入向量');
X=-1:.01:1;
Y=sim(net,X);
hold on
plot(X,Y);
hold on
legend('目标向量','仿真输出')