1、AC实验二实验二 MATLABMATLAB快速入门快速入门 p3 3、使用、使用MATLABMATLAB中的条件语句和循环语句,中的条件语句和循环语句,编程实现下面的功能:编程实现下面的功能:从从1 1累加到累加到2020,即:,即:1+2+3+4+1+2+3+4+20+20,当累,当累加和超过加和超过3030时,跳出时,跳出FORFOR循环,在命令窗循环,在命令窗口中输出此时的累加次数和累加值。口中输出此时的累加次数和累加值。演示程序演示程序 psum=0;sum=0;pfor i=1:20for i=1:20p sum=sum+i;sum=sum+i;p if sum30 if sum30
2、p%break;%break;p disp(sum is 30)disp(sum is 30)p fprintf(%2d,sum)fprintf(%2d,sum)p x=1 x=1p continue;continue;p end endpendendpi ipsumsum实验二实验二 MATLABMATLAB快速入门快速入门p4 4、神经网络常用的激活函数有、神经网络常用的激活函数有S S型、对型、对数数S S型、线性型和硬限幅等,在型、线性型和硬限幅等,在MATLABMATLAB中中有有tansig()tansig()、logsig()logsig()、purelin()purelin()
3、和和hardlim()hardlim()四个函数对应,请使用四个函数对应,请使用MATLABMATLAB编程,按下画所示图形,画出四个激活函编程,按下画所示图形,画出四个激活函数的图形。数的图形。演示程序演示程序 px=-10:0.2:10;x=-10:0.2:10;py1=tansig(x);y1=tansig(x);py2=logsig(x);y2=logsig(x);py3=purelin(x);y3=purelin(x);py4=hardlim(x);y4=hardlim(x);ph=figure(name,h=figure(name,这是一个显示多个激活函数图形的程序这是一个显示多个
4、激活函数图形的程序););psubplot(2,2,1);subplot(2,2,1);p%绘制第一个图形绘制第一个图形phnd1=plot(x,y1);hnd1=plot(x,y1);p%设置图形线条宽度设置图形线条宽度pset(hnd1,linewidth,1);set(hnd1,linewidth,1);p%设置图形线条颜色设置图形线条颜色pset(hnd1,color,red);set(hnd1,color,red);ptitle(Stitle(S型激活函数型激活函数););plegend(tansig);legend(tansig);pgrid on grid on p%设置第二个图
5、形的绘图位置为第一行第二列设置第二个图形的绘图位置为第一行第二列 psubplot(2,2,2);subplot(2,2,2);p hnd2=plot(x,y2);hnd2=plot(x,y2);p%设置图形线条宽度设置图形线条宽度pset(hnd2,linewidth,2);set(hnd2,linewidth,2);p%设置图形线条颜色设置图形线条颜色pset(hnd2,color,green);set(hnd2,color,green);ptitle(title(对数对数S S型激活函数型激活函数););plegend(logsig);legend(logsig);pgrid ongri
6、d onp%设置第三个图形的绘图位置为第二行第一列设置第三个图形的绘图位置为第二行第一列p subplot(2,2,3);subplot(2,2,3);p hnd3=plot(x,y3);hnd3=plot(x,y3);p%设置图形线条宽度设置图形线条宽度pset(hnd3,linewidth,3);set(hnd3,linewidth,3);p%设置图形线条颜色设置图形线条颜色pset(hnd3,color,blue);set(hnd3,color,blue);ptitle(title(线性激活函数线性激活函数););plegend(purelin);legend(purelin);pgri
7、d ongrid onp%设置第四个图形的绘图位置为第二行第二列设置第四个图形的绘图位置为第二行第二列p subplot(2,2,4);subplot(2,2,4);p hnd4=plot(x,y4);hnd4=plot(x,y4);p%设置图形线条宽度设置图形线条宽度pset(hnd4,linewidth,4);set(hnd4,linewidth,4);p%设置图形线条颜色设置图形线条颜色pset(hnd4,color,yellow);set(hnd4,color,yellow);ptitle(title(硬限幅激活函数硬限幅激活函数););plegend(hardlim);legend(
8、hardlim);pgrid ongrid on谢谢!谢谢!实验三实验三单层感知器的构建与使用单层感知器的构建与使用讲解讲解实验三单层感知器的构建与使用实验三单层感知器的构建与使用实验三单层感知器的构建与使用实验三单层感知器的构建与使用 p 1 1、已经对逻辑与的单层感知器实现的、已经对逻辑与的单层感知器实现的权值调整计算过程进行了讲解,请使用权值调整计算过程进行了讲解,请使用MATLABMATLAB语言编写程序,实现单层感知器对语言编写程序,实现单层感知器对逻辑与进行分类。逻辑与进行分类。演示程序演示程序1 1p%实验三第实验三第1 1题演示程序题演示程序p%设计并训练一个对与运算进行分类的
9、单层感知器设计并训练一个对与运算进行分类的单层感知器p%神经网络并输出分类结果。神经网络并输出分类结果。p%给定训练样本数据给定训练样本数据pP=0 0 1 1;0 1 0 1;P=0 0 1 1;0 1 0 1;p%给定样本数据所对应的类别,用给定样本数据所对应的类别,用1 1和和0 0来表示两种类别来表示两种类别pT=0 0 0 1;T=0 0 0 1;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0 1;0 1,1);net=
10、newp(0 1;0 1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束次后结束训练训练pnet.trainParam.epochs=20;net.trainParam.epochs=20;p%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T);net=train(net,P,T);演示程序演示程序1 1p%对训练后的网络进行仿真,即根据训练后的网络和样本数据对训练后的网络进行仿真,即根据训练后的网络和样本数据p%给出输出给出输出pa=net.b1;a=net.b1;pb=net.iw1
11、;b=net.iw1;pY=sim(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T);E1=mae(Y-T);p%给定测试数据,检测训练好的神经网络的性能给定测试数据,检测训练好的神经网络的性能pQ=1 0 1 0;0 1 1 0;Q=1 0 1 0;0 1 1 0;p%使用测试数据,对网络进行仿真,仿真输出即为分类的结果使用测试数据,对网络进行仿真,仿真输出即为分类的结果pY1=sim(net,Q);Y1=sim(net,Q);p%创建一个新的绘图窗口创建一个新的绘图窗口演示程序演示程序1 1
12、pfigure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据数据p%所对应的类别用约定的符号画出所对应的类别用约定的符号画出 p v=-0.5 2-0.5 2;v=-0.5 2-0.5 2;pplotpv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中绘制分类线利用权值和阈值,在坐标图中绘制分类线p%plotpc(net.iw1,net.b1)%plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移为更清楚的看到分类,可以给阈值加一个小的偏移量量 p plo
13、tpc(net.iw1,net.b1+0.1)plotpc(net.iw1,net.b1+0.1)实验三单层感知器的构建与使用实验三单层感知器的构建与使用p2 2、现需要对一组数据进行分类、现需要对一组数据进行分类,设样本设样本数据的输入数据为数据的输入数据为P=-0.4-0.5 0.6-P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5,0.1;0.9 0 0.1 0.5,其期望值为其期望值为T=1 T=1 1 0 1,1 0 1,请构建一个单层感知器对数据进请构建一个单层感知器对数据进行分类行分类,并用测试数据并用测试数据Q=0.6 0.9-0.1 Q=0.6 0.9-0.1
14、 0.7;-0.1-0.5 0.5-0.30.7;-0.1-0.5 0.5-0.3对构建好的神对构建好的神经网络进行测试经网络进行测试,并评价其性能并评价其性能.演示程序演示程序2 2p%实验三第实验三第2 2题演示程序题演示程序p%设计并训练一个对与运算进行分类的单层感知器神经网络设计并训练一个对与运算进行分类的单层感知器神经网络p%并输出分类结果。并输出分类结果。p%p%给定训练样本数据给定训练样本数据pP=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5;P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5;p%给定样本数据所对应的类别,用给定样本数据所对应的类别
15、,用1 1和和0 0来表示两种类别来表示两种类别pT=1 1 0 1;T=1 1 0 1;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0 1;0 1,1);net=newp(0 1;0 1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束训练次后结束训练pnet.trainParam.epochs=20;net.trainParam.epochs=20;演示程序演示程序2 2p
16、%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T);net=train(net,P,T);p%对训练后的网络进行仿真,即根据训练后的网络和样对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出本数据给出输出pa=net.b1a=net.b1pb=net.iw1b=net.iw1pY=sim(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T)E1=mae(Y-T)p%给定测试数据,检测训练好的神经网络的性能给定测试数据,检测训练好的神经网
17、络的性能pQ=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3;Q=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3;p%使用测试数据,对网络进行仿真,仿真输出即为分类使用测试数据,对网络进行仿真,仿真输出即为分类的结果的结果演示程序演示程序2 2pY1=sim(net,Q);Y1=sim(net,Q);p%创建一个新的绘图窗口创建一个新的绘图窗口pfigure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出数据所对应的类别用约定的符号画出 p v=-1 2-1 2;
18、v=-1 2-1 2;pplotpv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中绘制分类线利用权值和阈值,在坐标图中绘制分类线p plotpc(net.iw1,net.b1)plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移为更清楚的看到分类,可以给阈值加一个小的偏移量量 p%plotpc(net.iw1,net.b1+0.1)%plotpc(net.iw1,net.b1+0.1)实验三单层感知器的构建与使用实验三单层感知器的构建与使用p 3 3、有下面一组样本数据:输入数据为、有下面一组样本数据:输入数据为P=0 0
19、 0 1;1 0 1 1,P=0 0 0 1;1 0 1 1,目标值为目标值为0 1 1 0 1 1 00,能否使用单层感知器对其进行正确分,能否使用单层感知器对其进行正确分类,请编写类,请编写MATLABMATLAB程序验证,并对结果进程序验证,并对结果进行分析?行分析?演示程序演示程序3 3p%实验三第实验三第3 3题演示程序题演示程序p%设计并训练一个对与运算进行分类的单层感知器神经网络并输设计并训练一个对与运算进行分类的单层感知器神经网络并输出分类结果。出分类结果。p%p%给定训练样本数据给定训练样本数据pP=0 1 0 1;0 0 1 1;P=0 1 0 1;0 0 1 1;p%给定
20、样本数据所对应的类别,用给定样本数据所对应的类别,用1 1和和0 0来表示两种类别来表示两种类别pT=0 1 1 0;T=0 1 1 0;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0 1;0 1,1);net=newp(0 1;0 1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束训练次后结束训练pnet.trainParam.epochs=20;net.trainPara
21、m.epochs=20;p%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T);net=train(net,P,T);演示程序演示程序3 3p%对训练后的网络进行仿真,即根据训练后的网络和样对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出本数据给出输出pa=net.b1a=net.b1pb=net.iw1b=net.iw1pY=sim(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T)E1=mae(Y-T)p%给定测试数据,检测训练好
22、的神经网络的性能给定测试数据,检测训练好的神经网络的性能pQ=0 1 0 1;0 0 1 1;Q=0 1 0 1;0 0 1 1;p%使用测试数据,对网络进行仿真,仿真输出即为分类使用测试数据,对网络进行仿真,仿真输出即为分类的结果的结果演示程序演示程序3 3pY1=0 1 1 0;Y1=0 1 1 0;p%创建一个新的绘图窗口创建一个新的绘图窗口pfigure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出数据所对应的类别用约定的符号画出 p v=-1 2-1 2;v=-1 2-1 2;pplot
23、pv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中绘制分类线利用权值和阈值,在坐标图中绘制分类线p%plotpc(net.iw1,net.b1)%plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移为更清楚的看到分类,可以给阈值加一个小的偏移量量 p plotpc(net.iw1,net.b1+0.1)plotpc(net.iw1,net.b1+0.1)谢谢!谢谢!实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用讲讲解解实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用 实验四实验四 线性神经网络的
24、构建与使用线性神经网络的构建与使用 p1 1、有、有2121组单输入矢量和相对应的目标矢组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对量,试设计一个线性神经网络来拟合这对数组的函数关系,并用测试数据进行测试。数组的函数关系,并用测试数据进行测试。实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用 p输入与目标数据如下:输入与目标数据如下:输入数据:输入数据:P=-1:0.1:1P=-1:0.1:1 期望目标数据:期望目标数据:T=-0.96 0.577-0.0729 T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.133
25、6 0.201-0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.396 0.3449 0.1816-0.0312-0.2183-0.32010.3201 测试数据为:测试数据为:P2=-1:0.025:1P2=-1:0.025:1 演示程序演示程序 1 1pP=-1:0.1:1;P=-1:0.1:1;p%T=-0.96 0.577-0.0729 0.37
26、7 0.641 0.66 0.461 0.1336%T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;0.3449 0.1816-0.0312-0.2183-0.3201;p%创建一个只有一个输出,输入延时为创建一个只有一个输出,输入延时为0 0,学习速率为,学习速率为0.010.
27、01的的p%线性神经网络,线性神经网络,minmax(P)minmax(P)表示样表示样p%本数据的取值范围本数据的取值范围p%net=newlin(minmax(P),1,0,0.01);%net=newlin(minmax(P),1,0,0.01);p%对创建的线性神经网络进行初始化,设置权值和阈值的初始值对创建的线性神经网络进行初始化,设置权值和阈值的初始值p%net=init(net);%net=init(net);p%net.trainParam.epochs=500;%net.trainParam.epochs=500;p%设置网络训练后的目标误差为设置网络训练后的目标误差为0.0
28、0010.0001p%net.trainParam.goal=0.0001;%net.trainParam.goal=0.0001;p%net=train(net,P,T);%net=train(net,P,T);演示程序演示程序 1 1p%有有-标记间的部分为拟合函数时的程序,有标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序标记间的部分为测试时的程序p%-%-p%y=sim(net,P);%y=sim(net,P);p%求解网络的均方误差值求解网络的均方误差值p%E=mse(y-T);%E=mse(y-T);p%获取绘图句柄获取绘图句柄p%hndl1=plot(P,y);%h
29、ndl1=plot(P,y);p%设置线宽为设置线宽为2 2p%set(hndl1,linewidth,2);%set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色p%set(hndl1,color,red);%set(hndl1,color,red);p%hold on%hold onp%hndl2=plot(P,T);%hndl2=plot(P,T);演示程序演示程序 1 1p%set(hndl2,linewidth,2);%set(hndl2,linewidth,2);p%设置图形标题设置图形标题p%title(%title(线性神经网络逼近非线性函数的
30、线性神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例p%legend(%legend(线性神经网络逼近非线性函数线性神经网络逼近非线性函数,原线性数据原线性数据)p%-%-p%从此处到标记为从此处到标记为+的部分为测试时的程序的部分为测试时的程序,测试用此部测试用此部分程序替换分程序替换-间的程序间的程序p%测试数据测试数据p%P2=-1:0.025:1;%P2=-1:0.025:1;p%ytest=sim(net,P2);%ytest=sim(net,P2);p%plot(ytest,d,MarkerFaceColor,r,MarkerSize,8);%p
31、lot(ytest,d,MarkerFaceColor,r,MarkerSize,8);p%hold on%hold onp%plot(T,s,MarkerEdgeColor,k,MarkerFaceColor,g,Maplot(T,s,MarkerEdgeColor,k,MarkerFaceColor,g,MarkerSize,12);rkerSize,12);p%+%+实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用 p思考题思考题 1 1、一线性神经网络的输入为、一线性神经网络的输入为P=1.1-P=1.1-1.31.3,目标为,目标为T=0.6 1;T=0.6 1;设权值
32、和偏置的设权值和偏置的初始值为初始值为0 0,学习速率为,学习速率为0.010.01,请计算出,请计算出此网络前二次的权值和偏置的值?此网络前二次的权值和偏置的值?实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用 T(1)()2()()w kw ke kkpp权值调整公式(见权值调整公式(见神经网络实用教程神经网络实用教程p27p27)实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用p第一次调整第一次调整实际输出:1211110 00 01.1-1.3b wxx T0.6 1-0 00.6 111(1)(0)2*0.01*1.11.311.100.02*0.6 11
33、1.3=0.0320.0128eTYwwe实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用p第一次调整第一次调整实际输出:1211110.0320.01281.1-1.3=0.0179 0.0486b wxx T0.6 1-0.0179 0.04860.5821 0.951411(2)(1)2*0.01*1.1 1.31 1.10.0320.01280.02*0.5821 0.95141 1.3=0.0627 -0.0247eTYwwe实验四实验四 线性神经网络的构建与使用线性神经网络的构建与使用p思考题思考题2 2、用、用MATLABMATLAB编程实现第编程实现第1 1题,要
34、求输出每题,要求输出每一次迭代后的权值和偏置。一次迭代后的权值和偏置。演示程序演示程序2 2p%线性神经网络拟合曲线输出权值演示程序线性神经网络拟合曲线输出权值演示程序p%输入样本数输入样本数pNPATS=2;NPATS=2;p%输入样本值矩阵输入样本值矩阵pPatterns=1.1-1.3;Patterns=1.1-1.3;p%输出目标值输出目标值pTarget=0.6 1;Target=0.6 1;p%学习率学习率pLearnRate=0.01;LearnRate=0.01;演示程序演示程序2 2p%将偏置看作输入的第一个分量,组成网络输将偏置看作输入的第一个分量,组成网络输入值入值pIn
35、puts=ones(1,2);Patterns;Inputs=ones(1,2);Patterns;p%权值初始化权值初始化pWeights=0 0;Weights=0 0;p%循环计算权值和偏置的改变值循环计算权值和偏置的改变值pfor i=1:3for i=1:3p%计算神经元的输出计算神经元的输出 pResult=(Weights Result=(Weights*Inputs);Inputs);演示程序演示程序2 2p%判断实际输出与目标值是否相等,相等则结判断实际输出与目标值是否相等,相等则结束迭代,否则进入下一轮迭代束迭代,否则进入下一轮迭代pif Result=Target,bre
36、ak,endif Result=Target,break,endp%按按LMSLMS误差学习算法调整权值误差学习算法调整权值pWeights=Weights+2Weights=Weights+2*LearnRateLearnRate*(Target-(Target-Result)Result)*Inputs;Inputs;p%在显示器上输出权值编号其对应值在显示器上输出权值编号其对应值pfprintf(%2d.Weights=,i);fprintf(%2d.Weights=,i);pdisp(Weights);disp(Weights);pendend谢谢!谢谢!实验五实验五BPBP神经网络的
37、构建与使神经网络的构建与使用(一)用(一)讲解讲解实验五实验五BPBP神经网络的构建与使用神经网络的构建与使用 实验五实验五 BPBP神经网络的构建与使用神经网络的构建与使用 p1 1、有、有2121组单输入矢量和相对应的目标矢组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对量,试设计一个线性神经网络来拟合这对数组的函数关系,并用测试数据进行测试。数组的函数关系,并用测试数据进行测试。实验五实验五 BPBP神经网络的构建与使用神经网络的构建与使用 p存在的问题存在的问题1 1、激活函数的选择、激活函数的选择 tansig的定义域为负无穷到正无穷,值域为-1到1,logsig的定
38、义域为负无穷到正无穷,值域为0到12 2、结果如何显示?、结果如何显示?实验五实验五 BPBP神经网络的构建与使用神经网络的构建与使用 p输入与目标数据如下:输入与目标数据如下:输入数据:输入数据:P=-1:0.1:1P=-1:0.1:1 期望目标数据:期望目标数据:T=-0.96 0.577-0.0729 T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.434-0.5-0.393
39、-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.396 0.3449 0.1816-0.0312-0.2183-0.32010.3201 测试数据为:测试数据为:P2=-1:0.025:1P2=-1:0.025:1 BPBP演示程序演示程序p%本函数演示本函数演示BPBP网络对非线性数据的逼近效果网络对非线性数据的逼近效果p%下面为用下面为用BPBP神经网络逼近非线性数据的演示程序神经网络逼近非线性数据的演示程序p%输入样本输入样本pP=-1:0.1:1;P=-1:0.1:1;pT=-0.96 0.577 -0.0729 0.
40、377 0.641 0.66 0.461 0.1336 0.201-T=-0.96 0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;0.0312-0.2183-0.3201;p%创建一个创建一个BPBP神经网络,每一个输入向量的取值范围为神经网络,每一个输入向量的取值范围为-1
41、,1-1,1,隐含层有,隐含层有5 5个神经元,输出层个神经元,输出层p%有一个神经元,隐含层的激活函数为有一个神经元,隐含层的激活函数为tansigtansig,输出层的激活函数为,输出层的激活函数为logsiglogsig,训练函数为梯度下,训练函数为梯度下p%降函数,即降函数,即2.3.22.3.2节中所描述的标准学习算法节中所描述的标准学习算法pnet=newff(-1 1,5,1,tansig,tansig,traingd);net=newff(-1 1,5,1,tansig,tansig,traingd);p%可以改变训练步数为可以改变训练步数为30003000、50005000、
42、1000010000来查看网络的训练结果来查看网络的训练结果pnet.trainParam.epochs=5000;net.trainParam.epochs=5000;p%目标误差设为目标误差设为0.010.01pnet.trainParam.goal=0.01;net.trainParam.goal=0.01;BPBP演示程序演示程序p%设置学习速率为设置学习速率为0.10.1pLP.lr=0.1;LP.lr=0.1;pnet=train(net,P,T);net=train(net,P,T);p%有有-标记间的部分为拟合函数时的程序,有标记间的部分为拟合函数时的程序,有+标记间的部分为测
43、试时的程序标记间的部分为测试时的程序p%-%-py=sim(net,P);y=sim(net,P);pfigurefigurephndl1=plot(P,y);hndl1=plot(P,y);p%设置线宽为设置线宽为2 2pset(hndl1,linewidth,2);set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色pset(hndl1,color,red);set(hndl1,color,red);phold onhold onphndl2=plot(P,T);hndl2=plot(P,T);BPBP演示程序演示程序pset(hndl2,linewidt
44、h,2);set(hndl2,linewidth,2);p%设置图形标题设置图形标题ptitle(BPtitle(BP神经网络逼近非线性函数的神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例plegend(BPlegend(BP神经网络逼近非线性函数神经网络逼近非线性函数,原数据原数据)p%-%-p%从此处到标记为从此处到标记为+的部分为测试时的程序的部分为测试时的程序,测试用此部分程序替换测试用此部分程序替换-间的程序间的程序p%测试数据测试数据p%测试测试p%P2=-1:0.05:1;%P2=-1:0.05:1;p%ytest=sim(net,P2);%
45、ytest=sim(net,P2);p%figure%figurep%hndl1=plot(P2,ytest);%hndl1=plot(P2,ytest);BPBP演示程序演示程序p%设置线宽为设置线宽为2 2p%set(hndl1,linewidth,2);%set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色p%set(hndl1,color,red);%set(hndl1,color,red);p%hold on%hold onp%hndl2=plot(P,T);%hndl2=plot(P,T);p%set(hndl2,linewidth,2);%set
46、(hndl2,linewidth,2);p%设置图形标题设置图形标题p%title(BP%title(BP神经网络逼近非线性函数的神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例p%legend(BP%legend(BP神经网络逼近非线性函数神经网络逼近非线性函数,原数据原数据)p%+%+线性网络演示程序线性网络演示程序 p%本函数演示线性神经网络对非线性数据的逼近效果本函数演示线性神经网络对非线性数据的逼近效果p%下面为用线性神经网络逼近非线性数据的演示程序下面为用线性神经网络逼近非线性数据的演示程序pP=-1:0.1:1;P=-1:0.1:1;pT=-0
47、.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;0.3449 0.1816-0.0312-0.2183-0.3201;p%创建一个只有一个输出,输入延时为创建一个只有一个输出,输入延时为
48、0 0,学习速率为,学习速率为0.010.01的的p%线性神经网络,线性神经网络,minmax(P)minmax(P)表示样本数据的取值范围表示样本数据的取值范围pnet=newlin(minmax(P),1,0,0.01);net=newlin(minmax(P),1,0,0.01);p%对创建的线性神经网络进行初始化,设置权值和阈值的初始值对创建的线性神经网络进行初始化,设置权值和阈值的初始值pnet=init(net);net=init(net);pnet.trainParam.epochs=500;net.trainParam.epochs=500;p%设置网络训练后的目标误差为设置网
49、络训练后的目标误差为0.00010.0001pnet.trainParam.goal=0.0001;net.trainParam.goal=0.0001;线性网络演示程序线性网络演示程序pnet=train(net,P,T);net=train(net,P,T);p%有有-标记间的部分为拟合数据时的程序,有标记间的部分为拟合数据时的程序,有+标记间的部分为测试时的程序标记间的部分为测试时的程序p%-%-py=sim(net,P);y=sim(net,P);p%求解网络的均方误差值求解网络的均方误差值pE=mse(y-T);E=mse(y-T);pfigurefigurep%获取绘图句柄获取绘图
50、句柄phndl1=plot(P,y);hndl1=plot(P,y);p%设置线宽为设置线宽为2 2pset(hndl1,linewidth,2);set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色pset(hndl1,color,red);set(hndl1,color,red);线性网络演示程序线性网络演示程序phold onhold onphndl2=plot(P,T);hndl2=plot(P,T);pset(hndl2,linewidth,2);set(hndl2,linewidth,2);p%设置图形标题设置图形标题ptitle(title(线性