资源描述:
《NARX神经网络多步和单步预测》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、%SolveanAutoregressionProblemwithExternalInputwithaNARXNeuralNetwork解决一个NARX神经网络的外部输入自回归问题%ScriptgeneratedbyNeuralTimeSeriesapp脚本由神经时间序列程序生成%Created28-Mar-201710:42:15%%Thisscriptassumesthesevariablesaredefined:此脚本假设以下变量已定义:%%in-inputtimeseries.in-输入时间序列%out-feedbacktimeseries.out-反馈时间序
2、列%tonndata/fromnndata把数据转化为标准神经网络格式X=tonndata(in,false,false);T=tonndata(out,false,false);%ChooseaTrainingFunction选择一个训练功能%Foralistofalltrainingfunctionstype:helpnntrain%'trainlm'isusuallyfastest.%'trainbr'takeslongerbutmaybebetterforchallengingproblems.%'trainscg'useslessmemory.Suitabl
3、einlowmemorysituations.trainFcn='trainlm';%Levenberg-Marquardtbackpropagation.%CreateaNonlinearAutoregressiveNetworkwithExternalInputinputDelays=1:2;feedbackDelays=1:2;hiddenLayerSize=10;net=narxnet(inputDelays,feedbackDelays,hiddenLayerSize,'open',trainFcn);%ChooseInputandFeedbackPre/P
4、ost-ProcessingFunctions选择输入和反馈前/后处理功能%Settingsforfeedbackinputareautomaticallyappliedtofeedbackoutput反馈输入的设置将自动应用于反馈输出%Foralistofallprocessingfunctionstype:helpnnprocess%Customizeinputparametersat:net.inputs{i}.processParam删除矩阵的行定值。映射矩阵行的最小值和最大值为[1-1]%Customizeoutputparametersat:net.out
5、puts{i}.processParam删除矩阵的行定值。映射矩阵行的最小值和最大值为[1-1]net.inputs{1}.processFcns={'removeconstantrows','mapminmax'};net.inputs{2}.processFcns={'removeconstantrows','mapminmax'};%PreparetheDataforTrainingandSimulation准备数据用于训练和模拟%ThefunctionPREPARETSpreparestimeseriesdataforaparticularnetwork,pr
6、eparets功能,为一个特定的网络准备时间序列数据,%shiftingtimebytheminimumamounttofillinputstatesandlayer%states.UsingPREPARETSallowsyoutokeepyouroriginaltimeseriesdata%unchanged,whileeasilycustomizingitfornetworkswithdiffering%numbersofdelays,withopenlooporclosedloopfeedbackmodes.移动时间的最小量从而填写输入状态和层的状态。使用PRE
7、PARETS使你可以保存原时间序列数据不变,同时更易定制不同的网络延迟,通过开环或闭环反馈模式。[x,xi,ai,t]=preparets(net,X,{},T);%SetupDivisionofDataforTraining,Validation,Testing数据分割用于训练,验证,测试%Foralistofalldatadivisionfunctionstype:helpnndividenet.divideFcn='dividerand';%Dividedatarandomlynet.divideMode='time';%Divideupeve