MATLAB: How to use neural network for multi step ahead prediction

annDeep Learning Toolbox

This is my script file of my neural network toolbox. I am going to predict for multi step ahead, but in this script only gave me 0ne step ahead (ys) prediction. How can I modify this script to multi-step ahead prediction?
clc; clear; close all;
% Solve an Autoregression Time-Series Problem with a NAR Neural Network % VarName1 – feedback time series. % The VarName1 is my original time series consists a matrix (272*1)
targetSeries = tonndata(VarName1,false,false);
% Create a Nonlinear Autoregressive Network feedbackDelays = 1:2; hiddenLayerSize = 10; net = narnet(feedbackDelays,hiddenLayerSize);
% Choose Feedback Pre/Post-Processing Functions net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
% Prepare the Data for Training and Simulation [inputs,inputStates,layerStates,targets] = preparets(net,{},{},targetSeries);
% Setup Division of Data for Training, Validation, Testing net.divideFcn = 'dividerand'; % Divide data randomly net.divideMode = 'time'; % Divide up every value net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100;
% Choose a Training Function net.trainFcn = 'trainlm'; % Levenberg-Marquardt
% Choose a Performance Function net.performFcn = 'mse'; % Mean squared error
% Choose Plot Functions net.plotFcns = {'plotperform','plottrainstate','plotresponse', … 'ploterrcorr', 'plotinerrcorr'};
% Train the Network [net,tr] = train(net,inputs,targets,inputStates,layerStates);
% Test the Network outputs = net(inputs,inputStates,layerStates); errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs);
% Recalculate Training, Validation and Test Performance trainTargets = gmultiply(targets,tr.trainMask); valTargets = gmultiply(targets,tr.valMask); testTargets = gmultiply(targets,tr.testMask); trainPerformance = perform(net,trainTargets,outputs); valPerformance = perform(net,valTargets,outputs); testPerformance = perform(net,testTargets,outputs);
% Closed Loop Network netc = closeloop(net); [xc,xic,aic,tc] = preparets(netc,{},{},targetSeries); yc = netc(xc,xic,aic); perfc = perform(net,tc,yc);
% Early Prediction Network nets = removedelay(net); [xs,xis,ais,ts] = preparets(nets,{},{},targetSeries); ys = nets(xs,xis,ais); closedLoopPerformance = perform(net,tc,yc);
Thanks and Regards, Tiurmai

Best Answer

Increase the number of feedback delays.
Hope this helps
Thank you for formally accepting my answer
Greg