Abstract
clc;
Clear
Close all
LSTM prediction
tic
Load origin_data.mat
Load emd_data.mat
Load KPCA_data.mat
disp(‘⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯’)
disp(‘Single LSTM prediction’)
disp(‘⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯’)
num_samples = length(X); % number of samples
kim = 5; % delay step (kim historical data as independent variable)
zim = 1; % Predict across zim time points
or_dim = size(X,2);
% Reconstruct the dataset
i = 1: num_samples - kim - zim + 1
res(i, :) = [reshape(X(i: i + kim - 1, :), 1, kim*or_dim), X(i + kim + zim - 1, :)];
End.
% Training and test set division
outdim = 1; % last column of output
num_size = 0.7; % Proportion of training set to dataset
num_train_s = round(num_size * num_samples); % number of data samples in training set
f_ = size(res, 2) - outdim; % input feature dimension
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);
% Data normalisation
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax(‘apply’, P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax(‘apply’, T_test, ps_output);
% Conversion Format
i = 1 : M
vp_train{i, 1} = p_train(:, i);
vt_train{i, 1} = t_train(:, i);
End
For i = 1 : N
vp_test{i, 1} = p_test(:, i);
vt_test{i, 1} = t_test(:, i);
End.
% Create LSTM network with layers = [ ...
layers = [ ...
sequenceInputLayer(f_) % input layer
lstmLayer(100)
reluLaye
Instructions:
Import the Excel sheet into Matlab, open the code and run it.