MATLAB/Simulink code update
This commit is contained in:
parent
d2179071db
commit
d6b69acb17
28 changed files with 956 additions and 266 deletions
71
Matlab_scripts/gp_identification.m
Normal file
71
Matlab_scripts/gp_identification.m
Normal file
|
@ -0,0 +1,71 @@
|
|||
clear all
|
||||
close all
|
||||
clc
|
||||
%%%%%%%%%%%
|
||||
|
||||
load("gpr_carnot.mat");
|
||||
|
||||
%% Format the train/test data arrays
|
||||
tbl_gpr_train = array2table(gpr_train);
|
||||
tbl_gpr_train.Properties.VariableNames = cellstr(table_cols);
|
||||
tbl_gpr_train = removevars(tbl_gpr_train,{'u'});
|
||||
tbl_gpr_train_x = removevars(tbl_gpr_train, {'y'});
|
||||
|
||||
tbl_gpr_test = array2table(gpr_test);
|
||||
tbl_gpr_test.Properties.VariableNames = cellstr(table_cols);
|
||||
tbl_gpr_test = removevars(tbl_gpr_test,{'u'});
|
||||
tbl_gpr_test_x = removevars(tbl_gpr_test, {'y'});
|
||||
|
||||
|
||||
|
||||
%% Train the GP model
|
||||
OutputName = 'y';
|
||||
|
||||
tic;
|
||||
model = fitrgp(tbl_gpr_train, OutputName, 'KernelFunction', 'ardsquaredexponential', ...
|
||||
'FitMethod', 'sr', 'PredictMethod', 'fic', 'Standardize', 1);
|
||||
toc;
|
||||
%% Validate the model using training data
|
||||
[yhat_train, sigma_train] = predict(model, tbl_gpr_train_x);
|
||||
std_train = sqrt(sigma_train);
|
||||
|
||||
% prepare it for the fill function
|
||||
x_ax = (1:size(tbl_gpr_train, 1))';
|
||||
X_plot = [x_ax; flip(x_ax)];
|
||||
Y_plot = [yhat_train-1.96.*std_train; flip(yhat_train+1.96.*std_train)];
|
||||
|
||||
% plot a line + confidence bands
|
||||
figure(); hold on;
|
||||
title("GP performance on training data");
|
||||
plot(x_ax, tbl_gpr_train.y, 'red', 'LineWidth', 1.2);
|
||||
plot(x_ax, yhat_train, 'blue', 'LineWidth', 1.2)
|
||||
fill(X_plot, Y_plot , 1,....
|
||||
'facecolor','blue', ...
|
||||
'edgecolor','none', ...
|
||||
'facealpha', 0.3);
|
||||
legend({'data','prediction_mean', '95% confidence'},'Location','Best');
|
||||
hold off
|
||||
|
||||
%% Validate the model using test data
|
||||
[yhat_test, sigma_test] = predict(model, tbl_gpr_test_x);
|
||||
std_test = sqrt(sigma_test);
|
||||
|
||||
% prepare it for the fill function
|
||||
x_ax = (1:size(tbl_gpr_test, 1))';
|
||||
X_plot = [x_ax; flip(x_ax)];
|
||||
Y_plot = [yhat_test-1.96.*std_test; flip(yhat_test+1.96.*std_test)];
|
||||
|
||||
% plot a line + confidence bands
|
||||
figure(); hold on;
|
||||
title("GP performance on test data");
|
||||
plot(x_ax, tbl_gpr_test.y, 'red', 'LineWidth', 1.2);
|
||||
plot(x_ax, yhat_test, 'blue', 'LineWidth', 1.2)
|
||||
fill(X_plot, Y_plot , 1,....
|
||||
'facecolor','blue', ...
|
||||
'edgecolor','none', ...
|
||||
'facealpha', 0.3);
|
||||
legend({'data','prediction_mean', '95% confidence'},'Location','Best');
|
||||
hold off
|
||||
|
||||
%% Export the final GP model
|
||||
save('gpr_model.mat', 'model')
|
Loading…
Add table
Add a link
Reference in a new issue