Matlab 时间序列数据预处理(preparets 函数的应用)

时间:2024-03-02 14:24:49
preparets

为神经网络模拟或训练准备输入(input x)和目标(target y)时间序列数据
 
[Xs,Xi,Ai,Ts,EWs,shift] = preparets(net,Xnf,Tnf,Tf,EW)
 
net 神经网络
Xnf 输入数据(无反馈)
Tnf 目标数据(无反馈)
Tf  目标数据(有反馈)
 
Xs  转换后的输入数据
Xi  延迟状态的第一个输入项
Ai  延迟状态的第一个层
Ts  转换后的目标数据
EWs 转换后的误差权重
shift  从X和T前面截断的时间步数,以便适当地填充Xi和Ai
 
以 NARX 网络为例,代码如下
 
[X,T] = simplenarx_dataset;
net = narxnet(1:2,1:2,20);    % 这种情况一般用于模型的训练
[Xs,Xi,Ai,Ts] = preparets(net,X,{},T);
net = train(net,Xs,Ts,Xi,Ai);
view(net)
y = net(Xs,Xi,Ai);
 
在此状态下,设 X共有3165组元素,则T共有3165组元素
Xs 共有两类各3163(3165-2)组元素,第一类对应 X(3:3165)第二类对应T(3:3165)
Xi  共有两类各2组元素,第一类对应 X(1:2)第二类对应T(1:2)
Ai 为空
Ts 共有3163组元素,对应T(3:3165)
 
netc = closeloop(net);    % 将神经网络设置为闭环
netc.name = [net.name \' - Closed Loop\'];
view(netc)
[xc,xic,aic,tc] = preparets(netc,X,{},T);
 
在此状态下:
xc 共有3163(3165-2)组元素,对应 X(3:3165)
xic 共有2组元素,对应 X(1:2)
aic 为两组元素,含义不明
tc 共有3163组元素,对应T(3:3165)
 
nets = removedelay(net);  % 神经网络设置为开环,且可进行预测
nets.name = [net.name \' - Predict One Step Ahead\'];
view(nets)
[xs,xis,ais,ts] = preparets(nets,X,{},T);

在此状态下:
xs 共有两类各3164(3165-1)组元素,第一类对应 X(2:3165)第二类对应T(2:3165)
xis  共有两类各1组元素,第一类对应 X(1:1)第二类对应T(1:1)
ais 为空
ts 共有3164组元素,对应T(3:3165+1),最后一组为NaN