nass-simscape/Analysis/simulation_analysis.m

110 lines
3.2 KiB
Mathematica
Raw Normal View History

%%
clear; close all; clc;
%%
exp_ol = load('./data/exp_open_loop.mat', 'Dmeas');
exp_cl = load('./data/exp_close_loop_xyz.mat', 'Dmeas');
exp_without_nass = load('./data/exp_whitout_nass.mat', 'Dmeas');
load('./mat/sim_conf.mat', 'sim_conf');
exp_without_nass.Dmeas.Data(:, 3) = exp_without_nass.Dmeas.Data(:, 3) - exp_without_nass.Dmeas.Data(end, 3);
%% With and without NASS
steady_i = ceil(length(exp_ol.Dmeas.Time)/2);
figure;
hold on;
plot(exp_without_nass.Dmeas.Data(steady_i:end, 1),exp_without_nass.Dmeas.Data(steady_i:end, 2))
plot(exp_cl.Dmeas.Data(steady_i:end, 1),exp_cl.Dmeas.Data(steady_i:end, 2))
xlim([-1e-6, 1e-6]);
ylim([-1e-6, 1e-6]);
hold off;
xlabel('Displacement - $x$ [m]'); ylabel('Displacement - $y$ [m]');
exportFig('exp_w_wo_nass_xy', 'half-short')
figure;
hold on;
plot(exp_without_nass.Dmeas.Time(steady_i:end), exp_without_nass.Dmeas.Data(steady_i:end, 2));
plot(exp_without_nass.Dmeas.Time(steady_i:end), exp_cl.Dmeas.Data(steady_i:end, 2));
legend({'$y$ - without NASS', '$y$ - with NASS'})
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
exportFig('exp_w_wo_nass_y', 'half-small')
%% Compare OL and CL - Time
figure;
hold on;
plot(exp_ol.Dmeas.Time, exp_ol.Dmeas.Data(:, 1));
plot(exp_cl.Dmeas.Time, exp_cl.Dmeas.Data(:, 1));
legend({'x - OL', 'x - CL'})
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
exportFig('exp_control_time_x', 'normal-normal')
figure;
hold on;
plot(exp_ol.Dmeas.Time, exp_ol.Dmeas.Data(:, 2));
plot(exp_cl.Dmeas.Time, exp_cl.Dmeas.Data(:, 2));
legend({'y - OL', 'y - CL'})
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
exportFig('exp_control_time_y', 'normal-normal')
figure;
hold on;
plot(exp_ol.Dmeas.Time, exp_ol.Dmeas.Data(:, 3));
plot(exp_cl.Dmeas.Time, exp_cl.Dmeas.Data(:, 3));
legend({'z - OL', 'z - CL'})
hold off;
xlabel('Time [s]'); ylabel('Displacement [m]');
exportFig('exp_control_time_z', 'normal-normal')
%%
steady_i = ceil(length(exp_ol.Dmeas.Time)/2);
% steady_i = 1;
figure;
hold on;
plot(exp_ol.Dmeas.Data(steady_i:end, 1),exp_ol.Dmeas.Data(steady_i:end, 2))
plot(exp_cl.Dmeas.Data(steady_i:end, 1),exp_cl.Dmeas.Data(steady_i:end, 2))
legend({'OL', 'CL'})
hold off;
xlabel('Displacement - $x$ [s]'); ylabel('Displacement - $y$ [m]');
figure;
hold on;
plot3(exp_ol.Dmeas.Data(steady_i:end, 1),exp_ol.Dmeas.Data(steady_i:end, 2),exp_ol.Dmeas.Data(steady_i:end, 3))
plot3(exp_cl.Dmeas.Data(steady_i:end, 1),exp_cl.Dmeas.Data(steady_i:end, 2),exp_cl.Dmeas.Data(steady_i:end, 3))
legend({'OL', 'CL'})
hold off;
xlabel('Displacement - $x$ [s]'); ylabel('Displacement - $y$ [m]'); zlabel('Displacement - $z$ [m]');
%% Compare OL and CL - PSD
han_windows_ol = hanning(ceil(length(exp_ol.Dmeas.Time(steady_i:end))/2));
[psd_x_ol, freqs_x_ol] = pwelch(exp_ol.Dmeas.Data(steady_i:end, 1), han_windows_ol, 0, [], 1/sim_conf.Ts);
han_windows_cl = hanning(ceil(length(exp_cl.Dmeas.Time(steady_i:end))/2));
[psd_x, freqs_x] = pwelch(exp_cl.Dmeas.Data(steady_i:end, 1), han_windows_cl, 0, [], 1/sim_conf.Ts);
figure;
hold on;
plot(freqs_x_ol, sqrt(psd_x_ol));
plot(freqs_x, sqrt(psd_x));
set(gca,'xscale','log'); set(gca,'yscale','log');
xlabel('Frequency [Hz]'); ylabel('PSD [$m/\sqrt{Hz}$]');
legend({'x - OL', 'x - CL'})
hold off;
exportFig('exp_psd_x', 'normal-normal')