Matlab中各种神经网络的使用示例Word格式文档下载.docx
《Matlab中各种神经网络的使用示例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Matlab中各种神经网络的使用示例Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
最大训练时间(缺省为inf)
[net,tr]=train(net,P,t);
%网络训练
a=sim(net,P)
%网络仿真
%通用径向基函数网络
%其在逼近能力,分类能力,学习速度方面均优于BP神经网络
%在径向基网络中,径向基层的散步常数是spread的选取是关键
%spread越大,需要的神经元越少,但精度会相应下降,spread的缺省值为1
%可以通过net=newrbe(P,T,spread)生成网络,且误差为0
%可以通过net=newrb(P,T,goal,spread)生成网络,神经元由1开始增加,直到达到训练精度或神经元数目最多为止
%GRNN网络,迅速生成广义回归神经网络(GRNN)
P=[456];
T=[1.53.66.7];
net=newgrnn(P,T);
%仿真验证
p=4.5;
v=sim(net,p)
%PNN网络,概率神经网络
P=[00;
11;
03;
14;
31;
41;
43]'
;
Tc=[1122333];
%将期望输出通过ind2vec()转换,并设计、验证网络
T=ind2vec(Tc);
net=newpnn(P,T);
Y=sim(net,P);
Yc=vec2ind(Y)
%尝试用其他的输入向量验证网络
P2=[14;
01;
52]'
Y=sim(net,P2);
%应用newrb()函数构建径向基网络,对一系列数据点进行函数逼近
P=-1:
0.1:
1;
T=[-0.9602-0.5770-0.07290.37710.64050.66000.4609...
0.1336-0.2013-0.4344-0.500-0.3930-0.1647-0.0988...
0.30720.39600.34490.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)
径向基传递函数'
)
输入向量p'
%隐层神经元的权值、阈值与径向基函数的位置和宽度有关,只要隐层神经元数目、权值、阈值正确,可逼近任意函数
%例如
a2=radbas(p-1.5);
a3=radbas(p+2);
a4=a+a2*1.5+a3*0.5;
plot(p,a,'
b'
p,a2,'
g'
p,a3,'
r'
p,a4,'
m--'
径向基传递函数权值之和'
输入p'
输出a'
%应用newrb()函数构建径向基网络的时候,可以预先设定均方差精度eg以及散布常数sc
eg=0.02;
sc=1;
%其值的选取与最终网络的效果有很大关系,过小造成过适性,过大造成重叠性
net=newrb(P,T,eg,sc);
%网络测试
*'
输入'
X=-1:
.01:
Y=sim(net,X);
holdon
plot(X,Y);
holdoff
legend('
目标'
'
输出'
%应用grnn进行函数逼近
P=[12345678];
T=[01232121];
.'
markersize'
30)
axis([09-14])
待逼近函数'
P'
T'
%网络设计
%对于离散数据点,散布常数spread选取比输入向量之间的距离稍小一些
spread=0.7;
net=newgrnn(P,T,spread);
A=sim(net,P);
outputline=plot(P,A,'
o'
10,'
color'
[100]);
检测网络'
T和A'
%应用pnn进行变量的分类
P=[12;
22;
11];
%输入向量
Tc=[123];
%P对应的三个期望输出
%绘制出输入向量及其相对应的类别
plot(P(1,:
),P(2,:
),'
fori=1:
3
text(P(1,i)+0.1,P(2,i),sprintf('
class%g'
Tc(i)))
end
axis([0303]);
三向量及其类别'
P(1,:
)'
P(2,:
spread=1;
net=newgrnn(P,T,speard);
Ac=vec2ind(A);
%绘制输入向量及其相应的网络输出
Ac(i)))
网络测试结果'
%广义回归神经网络
%%GRNN神经网络,主要用于函数逼近。
x=-2:
0.01:
1
y=2*x.^6+3*x.^5-3*x.^3+x.^2+1
P=x(1:
15:
end)
T=y(1:
spread=[0.050.20.40.60.8];
l_style={'
r.-'
bo--'
ko-.'
k*--'
r^-'
};
length(spread)
net=newgrnn(P,T,spread(i));
a=sim(net,P);
plot(P,a,l_style{i})
holdon
spread=0.05'
spread=0.2'
spread=0.4'
spread=0.6'
spread=0.8'
traindata'
GRNN神经网络spread探讨'
loaddata;
%载入数据并将数据分成训练和预测两类
p_train=p(1:
10,:
p_test=p(11:
13,:
t_train=t(1:
t_test=t(11:
%将各个矩阵转置以便适应网络结构
p_train=p_train'
t_train=t_train'
p_test=p_test'
t_test=t_test'
%将数据归一化
[pn,minp,maxp,tn,mint,maxt]=premnmx(p_train,t_train);
p2n=tramnmx(p_test,minp,maxp);
forsc=0.1:
tic,
net=newgrnn(pn,tn,sc);
sc
toc
Out=sim(net,p2n);
a2=postmnmx(Out,mint,maxt);
e=t_test-a2'
perf=mse(e);
Y=sim(net,pn);
a3=postmnmx(Y,mint,maxt);
ep=a3-t_train;
perfp=mse(ep);
holdon;
figure
(1);
title('
网络的预测误差'
plot(sc,perf,'
g:
figure
(2);
网络的逼近误差'
plot(sc,perfp,'
r:
%通用感应器神经网络
P=[-0.5-0.50.3-0.1-40;
-0.50.5-0.5150];
%输入向量
T=[11001];
%期望输出
plotpv(P,T);
%描绘输入点图像
net=newp([-401;
-150],1);
%生成网络,其中参数分别为输入向量的范围和神经元感应器数量
linehandle=plotpc(net.iw{1},net.b{1});
net.adaptparam.passes=3;
fora=1:
25%训练次数
[net,Y,E]=adapt(net,P,T);
linehandle=plotpc(net.iw{1},net.b{1},linehandle);
drawnow;
%通用线性网络程序
%通用newlind进行预测
time=0:
0.025:
5;
T=sin(time*4*pi);
Q=length(T);
P=zeros(5,Q);
%P中存储信号T的前5(可变,根据需要而定)次值,作为网络输入。
P(1,2:
Q)=T(1,1:
(Q-1));
P(2,3:
(Q-2));
P(3,4:
(Q-3));
P(4,5:
(Q-4));
P(5,6:
(Q-5));
plot(time,T)%绘制信号T曲线
时间'
ylabe