clear, clc, close all; D=readmatrix('ExportData.xls'); data=D; data1=data; nn=16; numTimeStepsTrain = floor(nn); [data_in,PS_in]=mapminmax(data1(:,1:end-1)'); [data_out,PS_out]=mapminmax(data1(:,end)'); data=[data_in;data_out]; data=data'; [XTrain,YTrain,XTest] = DataProgress(data,numTimeStepsTrain); dataTest = data(numTimeStepsTrain+1:end,:); YTest = dataTest(:,end)'; numFeatures= 10; numResponses = 1; numHiddenUnits = 10; layers = LSTM(numFeatures,numResponses,numHiddenUnits); XTrain=XTrain'; YTrain=YTrain'; Def_options(); net = trainNetwork(XTrain,YTrain,layers,options); net = predictAndUpdateState(net,XTrain); %M = numel(XTrain); M=length(XTrain(1,:)); for i = 1:M [net,YPred_1(:,i)] = predictAndUpdateState(net,XTrain(:,i),'ExecutionEnvironment','cpu'); end T_sim1=mapminmax("reverse",YPred_1,PS_out); N=length(XTest(1,:)); for i = 1:N [net,YPred_2(:,i)] = predictAndUpdateState(net,XTest(:,i),'ExecutionEnvironment','cpu');% end T_sim2=mapminmax("reverse",YPred_2,PS_out); T_train=data1(1:M,end)'; T_test=data1(M+1:end,end)'; error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M); error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N); % MAE mae1 = sum(abs(T_sim1 - T_train)) ./ M ; mae2 = sum(abs(T_sim2 - T_test )) ./ N ; disp(['Train-MAE:', num2str(mae1)]) disp(['VAL-MAE:', num2str(mae2)]) % MAPE maep1 = sum(abs(T_sim1 - T_train)./T_train) ./ M ; maep2 = sum(abs(T_sim2 - T_test )./T_test) ./ N ; disp(['Train-MAPE:', num2str(maep1)]) disp(['VAL-MAPE为:', num2str(maep2)]) % RMSE RMSE1 = sqrt(sumsqr(T_sim1 - T_train)/M); RMSE2 = sqrt(sumsqr(T_sim2 - T_test)/N); disp(['Train-RMSE:', num2str(RMSE1)]) disp(['VAL-RMSE:', num2str(RMSE2)]) figure subplot(2,1,1) plot(T_sim1,'-s','Color',[255 0 0]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[250 0 0]./255) hold on plot(T_train,'-o','Color',[150 150 150]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[150 150 150]./255) legend( 'Train','Real','Location','best'); title('Res','fontsize',12) xlabel('Sample','fontsize',12); ylabel('Value','fontsize',12); xlim([1 M]) %------------------------------------------------------------------------------------- subplot(2,1,2) bar((T_sim1 - T_train)./T_train) legend('Train-Err','Location','best') title('Train-Err','fontsize',12) ylabel('Err','fontsize',12) xlabel('Sample','fontsize',12) xlim([1 M]); %------------------------------------------------------------------------------------- figure subplot(2,1,1) plot(T_sim2,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255) hold on plot(T_test,'-o','Color',[0 0 0]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[0 0 0]./255) legend('Test','Real','Location','best'); title('Res','fontsize',12) xlabel('Sample','fontsize',12); ylabel('Val','fontsize',12); xlim([1 N]) %------------------------------------------------------------------------------------- subplot(2,1,2) bar((T_sim2 - T_test )./T_test) legend('Test-Err','Location','NorthEast') title('Test-Err','fontsize',12) ylabel('Err','fontsize',12) xlabel('Sample','fontsize',12) xlim([1 N]);