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

    clear all 
clc  
%  定义训练样本矢量 
% P 为输入矢量 
P = [-1:0.05:1]; 
% T 为目标矢量 
T = sin(2*pi*P)+0.1*randn(size(P)); 
%  绘制训练样本数据点  
figure(1)
plot(P,T,'+'); 
title('绘制样本数据点');
xlabel('输入变量');
ylabel('目标变量'); 
hold on; 
%  绘制不含噪声的正弦曲线
figure(2)
plot(P,sin(2*pi*P),':'); 
title('绘制不含噪声的数据点');
xlabel('输入变量');
ylabel('目标变量'); 
hold on; 

%  定义验证样本
%  验证样本的输入矢量
v.P = [-0.975:0.05:0.975];         
%  验证样本的目标矢量 
v.T = sin(2*pi*v.P)+0.1*randn(size(v.P));      

%  创建一个新的前向神经网络 
net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdx'); 
%  设置训练参数 
net.trainParam.epochs = 500; 
net.trainParam.goal = 1e-6;  
net = init(net); 
%  训练 BP 网络 
[net,tr]=train(net,P,T,[],[],v); 
%  对 BP 网络进行仿真 
A = sim(net,P); 
%  计算仿真误差 
E = T - A; 
MSE=mse(E) 
%  绘制仿真拟合结果曲线 
figure(3)
plot(P,A,P,T,'+'); 
title('绘制样本数据点');
xlabel('输入变量');
ylabel('目标变量');