https://blog.csdn.net/u012526003/article/details/79367385
本文主要完善这个博客没有交代的问题,如何在不知道后面时间点的结果的情况下进行预测。
clc,clear,close all
t = -5:.01:5;
pressure = sin(10*t)';
figure
plot( pressure )
%% 训练集与测试集的个数
num_all_data = length( pressure );
% 前75%的数据作为训练数据
num_train = floor( num_all_data * 0.75 );
% 后25%的数据作为测试数据
num_test = num_all_data - num_train;
% 转化为narnet需要的序列数据
y_train_nn = num2cell( pressure(1:num_train) )';
y_test_nn = num2cell( pressure(1+num_train:end))';
%% 延迟,即当前值依赖于过去的多少个值
feedback_delays = 1:10;
% 隐含层节点的个数
num_hd_neuron = 10;
% narnet构建
net = narnet(feedback_delays, num_hd_neuron);
[Xs,Xi,Ai,Ts] = preparets(net,{},{}, y_train_nn);
net = train(net,Xs,Ts,Xi,Ai);
% view(net)
Y = net(Xs,Xi);
perf = perform(net,Ts,Y);
fprintf( 'neural network: mse on training set : %.6f\n', perf );
%% yuce hou 20ge
[Y,Xf,Af] = net(Xs,Xi,Ai);
[netc,Xic,Aic] = closeloop(net,Xf,Af);
y2 = netc(num2cell(zeros(1,20)),Xic,Aic);
plot( 1:251, cell2mat(y_test_nn),'r' )
hold on
plot( 251:270, cell2mat(y2) )