107 lines
3.4 KiB
Matlab
107 lines
3.4 KiB
Matlab
%%
|
|
clear; close all; clc;
|
|
|
|
%% Used to get Ts
|
|
run init_sim_configuration;
|
|
|
|
%% Load simulation results
|
|
gm_ol = load('./data/ground_motion_ol.mat', 'Dsample');
|
|
gm_cl = load('./data/ground_motion.mat', 'Dsample');
|
|
|
|
%% Compare OL and CL - Time
|
|
figure;
|
|
hold on;
|
|
plot(gm_ol.Dsample.Time, gm_ol.Dsample.Data(:, 1));
|
|
plot(gm_cl.Dsample.Time, gm_cl.Dsample.Data(:, 1));
|
|
legend({'x - OL', 'x - CL'})
|
|
hold off;
|
|
xlabel('Time [s]'); ylabel('Displacement [m]');
|
|
|
|
exportFig('gm_control_time_x', 'normal-normal')
|
|
|
|
%% Compare OL and CL - Time
|
|
figure;
|
|
hold on;
|
|
plot(gm_ol.Dsample.Time, gm_ol.Dsample.Data(:, 2));
|
|
plot(gm_cl.Dsample.Time, gm_cl.Dsample.Data(:, 2));
|
|
legend({'y - OL', 'y - CL'})
|
|
hold off;
|
|
xlabel('Time [s]'); ylabel('Displacement [m]');
|
|
|
|
exportFig('gm_control_time_y', 'normal-normal')
|
|
|
|
%% Compare OL and CL - Time
|
|
figure;
|
|
hold on;
|
|
plot(gm_ol.Dsample.Time, gm_ol.Dsample.Data(:, 3));
|
|
plot(gm_cl.Dsample.Time, gm_cl.Dsample.Data(:, 3));
|
|
legend({'z - OL', 'z - CL'})
|
|
hold off;
|
|
xlabel('Time [s]'); ylabel('Displacement [m]');
|
|
|
|
exportFig('gm_control_time_z', 'normal-normal')
|
|
|
|
%% Compare OL and CL - PSD
|
|
han_windows_ol = hanning(ceil(length(gm_ol.Dsample.Time)/10));
|
|
[psd_x_ol, freqs_x_ol] = pwelch(gm_ol.Dsample.Data(:, 1), han_windows_ol, 0, [], 1/Ts);
|
|
|
|
han_windows = hanning(ceil(length(gm_cl.Dsample.Time)/10));
|
|
[psd_x, freqs_x] = pwelch(gm_cl.Dsample.Data(:, 1), han_windows, 0, [], 1/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({'y - OL', 'y - CL'})
|
|
hold off;
|
|
|
|
exportFig('gm_control_psd_x', 'normal-normal')
|
|
|
|
%% Compare OL and CL - PSD
|
|
han_windows_ol = hanning(ceil(length(gm_ol.Dsample.Time)/10));
|
|
[psd_y_ol, freqs_y_ol] = pwelch(gm_ol.Dsample.Data(:, 2), han_windows_ol, 0, [], 1/Ts);
|
|
|
|
han_windows = hanning(ceil(length(gm_cl.Dsample.Time)/10));
|
|
[psd_y, freqs_y] = pwelch(gm_cl.Dsample.Data(:, 2), han_windows, 0, [], 1/Ts);
|
|
|
|
figure;
|
|
hold on;
|
|
plot(freqs_y_ol, sqrt(psd_y_ol));
|
|
plot(freqs_y, sqrt(psd_y));
|
|
set(gca,'xscale','log'); set(gca,'yscale','log');
|
|
xlabel('Frequency [Hz]'); ylabel('PSD [$m/\sqrt{Hz}$]');
|
|
legend({'y - OL', 'y - CL'})
|
|
hold off;
|
|
|
|
exportFig('gm_control_psd_y', 'normal-normal')
|
|
|
|
%% Compare OL and CL - PSD
|
|
load('./mat/G_xg_to_d.mat', 'G_xg_to_d');
|
|
load('./mat/weight_Wxg.mat', 'Wxg');
|
|
load('./mat/T_S.mat', 'S', 'T');
|
|
|
|
freqs = logspace(-1, 3, 1000);
|
|
dz_ol = squeeze(abs(freqresp(Wxg*G_xg_to_d(3, 3), freqs, 'Hz')));
|
|
dz_cl = squeeze(abs(freqresp(Wxg*G_xg_to_d(3, 3)*S(3, 3), freqs, 'Hz')));
|
|
|
|
han_windows_ol = hanning(ceil(length(gm_ol.Dsample.Time)/10));
|
|
[psd_z_ol, freqs_z_ol] = pwelch(gm_ol.Dsample.Data(:, 3), han_windows_ol, 0, [], 1/Ts);
|
|
|
|
han_windows = hanning(ceil(length(gm_cl.Dsample.Time)/10));
|
|
[psd_z, freqs_z] = pwelch(gm_cl.Dsample.Data(:, 3), han_windows, 0, [], 1/Ts);
|
|
|
|
figure;
|
|
hold on;
|
|
plot(freqs_z_ol, sqrt(psd_z_ol), '-', 'Color', [0 0.4470 0.7410], 'DisplayName', '$Dg \rightarrow D_x$ - OL (sim)');
|
|
plot(freqs, dz_ol, '--', 'Color', [0 0.4470 0.7410], 'DisplayName', '$Dg \rightarrow D_x$ - OL (th)');
|
|
plot(freqs_z, sqrt(psd_z), '-', 'Color', [0.8500 0.3250 0.0980], 'DisplayName', '$Dg \rightarrow D_x$ - CL (sim)');
|
|
plot(freqs, dz_cl, '--', 'Color', [0.8500 0.3250 0.0980], 'DisplayName', '$Dg \rightarrow D_x$ - CL (th)');
|
|
set(gca,'xscale','log'); set(gca,'yscale','log');
|
|
xlabel('Frequency [Hz]'); ylabel('PSD [$m/\sqrt{Hz}$]');
|
|
legend('location', 'southwest');
|
|
hold off;
|
|
|
|
exportFig('gm_control_psd_z', 'normal-normal')
|