|  | 
 
| 
这是一个bp神经网络对时间序列进行单步预测,如果进行多步预测,程序该怎么循环呢,请朋友指点一下。
x
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。您需要 登录 才可以下载或查看,没有账号?我要加入 
  
 clc
 clear
 close all
 load mackeyclass.dat
 t=mackeyclass(:,1);
 a=mackeyclass(:,2);
 %---------------------------------------------------
 % 产生训练样本与测试样本
 
 n1 = t(1:2:200)';
 x1 = a(1:2:200)';
 
 n2 = t(2:2:200)';
 x2 = a(2:2:200)';
 
 xn_train = n1;          % 训练样本,每一列为一个样本
 dn_train = x1;          % 训练目标,行向量
 
 xn_test = n2;           % 测试样本,每一列为一个样本
 dn_test = x2;           % 测试目标,行向量
 
 %---------------------------------------------------
 % 函数接口赋值
 
 NodeNum = 20;           % 隐层节点数
 TypeNum = 1;            % 输出维数
 p1 = xn_train;          % 训练输入
 t1 = dn_train;          % 训练输出
 Epochs = 1000;          % 训练次数
 
 P = xn_test;            % 测试输入
 T = dn_test;            % 测试输出(真实值)
 
 %---------------------------------------------------
 % 设置网络参数
 
 TF1 = 'logsig';TF2 = 'purelin';
 net = newff(minmax(p1),[NodeNum TypeNum],{TF1 TF2},'trainlm');
 
 net.trainParam.epochs = Epochs;     % 最大训练次数
 net.trainParam.goal = 1e-8;         % 最小均方误差
 net.trainParam.min_grad = 1e-20;    % 最小梯度
 net.trainParam.show = 200;          % 训练显示间隔
 net.trainParam.time = inf;          % 最大训练时间
 
 %---------------------------------------------------
 % 训练与测试
 
 net = train(net,p1,t1);     % 训练
 X = sim(net,P);             % 测试 - 输出为预测值
 
 %---------------------------------------------------
 % 结果作图
 
 plot(1:length(n2),x2,'r+:',1:length(n2),X,'bo:')
 title('+为真实值,o为预测值')
 | 
 |