diff --git a/matlab/figs/hinf_comp_filters.pdf b/matlab/figs/hinf_comp_filters.pdf index 9fa0b61..031351d 100644 Binary files a/matlab/figs/hinf_comp_filters.pdf and b/matlab/figs/hinf_comp_filters.pdf differ diff --git a/matlab/figs/hinf_comp_filters.png b/matlab/figs/hinf_comp_filters.png index eeacc09..9b65821 100644 Binary files a/matlab/figs/hinf_comp_filters.png and b/matlab/figs/hinf_comp_filters.png differ diff --git a/matlab/figs/htwo_comp_filters.pdf b/matlab/figs/htwo_comp_filters.pdf index 273e57e..0c5536c 100644 Binary files a/matlab/figs/htwo_comp_filters.pdf and b/matlab/figs/htwo_comp_filters.pdf differ diff --git a/matlab/figs/htwo_comp_filters.png b/matlab/figs/htwo_comp_filters.png index 04396e1..9cb406d 100644 Binary files a/matlab/figs/htwo_comp_filters.png and b/matlab/figs/htwo_comp_filters.png differ diff --git a/matlab/figs/htwo_hinf_comp_filters.pdf b/matlab/figs/htwo_hinf_comp_filters.pdf index 470e6e9..26decfa 100644 Binary files a/matlab/figs/htwo_hinf_comp_filters.pdf and b/matlab/figs/htwo_hinf_comp_filters.pdf differ diff --git a/matlab/figs/htwo_hinf_comp_filters.png b/matlab/figs/htwo_hinf_comp_filters.png index a94c5a7..2812222 100644 Binary files a/matlab/figs/htwo_hinf_comp_filters.png and b/matlab/figs/htwo_hinf_comp_filters.png differ diff --git a/matlab/figs/sensors_nominal_dynamics.pdf b/matlab/figs/sensors_nominal_dynamics.pdf index 0d57c38..17bdd19 100644 Binary files a/matlab/figs/sensors_nominal_dynamics.pdf and b/matlab/figs/sensors_nominal_dynamics.pdf differ diff --git a/matlab/figs/sensors_nominal_dynamics.png b/matlab/figs/sensors_nominal_dynamics.png index ef0de31..06dbde1 100644 Binary files a/matlab/figs/sensors_nominal_dynamics.png and b/matlab/figs/sensors_nominal_dynamics.png differ diff --git a/matlab/figs/sensors_nominal_dynamics_and_uncertainty.pdf b/matlab/figs/sensors_nominal_dynamics_and_uncertainty.pdf index 066b735..d5678c2 100644 Binary files a/matlab/figs/sensors_nominal_dynamics_and_uncertainty.pdf and b/matlab/figs/sensors_nominal_dynamics_and_uncertainty.pdf differ diff --git a/matlab/figs/sensors_nominal_dynamics_and_uncertainty.png b/matlab/figs/sensors_nominal_dynamics_and_uncertainty.png index e69da1c..4d9bc32 100644 Binary files a/matlab/figs/sensors_nominal_dynamics_and_uncertainty.png and b/matlab/figs/sensors_nominal_dynamics_and_uncertainty.png differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_H2.pdf b/matlab/figs/super_sensor_dynamical_uncertainty_H2.pdf index 3790cff..b2499d8 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_H2.pdf and b/matlab/figs/super_sensor_dynamical_uncertainty_H2.pdf differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_H2.png b/matlab/figs/super_sensor_dynamical_uncertainty_H2.png index d237df8..4f91289 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_H2.png and b/matlab/figs/super_sensor_dynamical_uncertainty_H2.png differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.pdf b/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.pdf index c48291d..df6cb5d 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.pdf and b/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.pdf differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.png b/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.png index ecbaf21..c09f111 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.png and b/matlab/figs/super_sensor_dynamical_uncertainty_Hinf.png differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf b/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf index f108c83..8088f3f 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf and b/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.pdf differ diff --git a/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.png b/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.png index 7b547b0..6e7fd97 100644 Binary files a/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.png and b/matlab/figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.png differ diff --git a/matlab/figs/weight_uncertainty_bounds_Wu.pdf b/matlab/figs/weight_uncertainty_bounds_Wu.pdf index d5f94aa..be47ca9 100644 Binary files a/matlab/figs/weight_uncertainty_bounds_Wu.pdf and b/matlab/figs/weight_uncertainty_bounds_Wu.pdf differ diff --git a/matlab/figs/weight_uncertainty_bounds_Wu.png b/matlab/figs/weight_uncertainty_bounds_Wu.png index bb9c1f3..9432ab6 100644 Binary files a/matlab/figs/weight_uncertainty_bounds_Wu.png and b/matlab/figs/weight_uncertainty_bounds_Wu.png differ diff --git a/matlab/index.org b/matlab/index.org index 0f394e5..2f94b75 100644 --- a/matlab/index.org +++ b/matlab/index.org @@ -145,8 +145,10 @@ The true sensor dynamics has some uncertainty associated to it and described in Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nominal_dynamics]]. #+begin_src matlab :exports none figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plot(freqs, abs(squeeze(freqresp(G1, freqs, 'Hz'))), '-', 'DisplayName', '$G_1(j\omega)$'); plot(freqs, abs(squeeze(freqresp(G2, freqs, 'Hz'))), '-', 'DisplayName', '$G_2(j\omega)$'); @@ -156,7 +158,7 @@ Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nomi hold off; % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plot(freqs, 180/pi*angle(squeeze(freqresp(G1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*angle(squeeze(freqresp(G2, freqs, 'Hz'))), '-'); @@ -165,6 +167,7 @@ Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nomi ylim([-180 180]); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; + linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); #+end_src @@ -222,8 +225,10 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical #+begin_src matlab :exports none figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plotMagUncertainty(W1, freqs, 'G', G1, 'color_i', 1, 'DisplayName', '$G_1$'); plotMagUncertainty(W2, freqs, 'G', G2, 'color_i', 2, 'DisplayName', '$G_2$'); @@ -240,7 +245,7 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical ylim([1e-2, 1e4]) % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plotPhaseUncertainty(W1, freqs, 'G', G1, 'color_i', 1); plotPhaseUncertainty(W2, freqs, 'G', G2, 'color_i', 2); @@ -253,6 +258,7 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical ylim([-180 180]); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; + linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); #+end_src @@ -473,9 +479,10 @@ Finally, $H_1(s)$ is defined as follows The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]]. #+begin_src matlab :exports none figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), 'DisplayName', '$H_1$'); plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), 'DisplayName', '$H_2$'); @@ -486,7 +493,7 @@ The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]] legend('location', 'northeast', 'FontSize', 8); % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plot(freqs, 180/pi*angle(squeeze(freqresp(H1, freqs, 'Hz')))); plot(freqs, 180/pi*angle(squeeze(freqresp(H2, freqs, 'Hz')))); @@ -640,8 +647,10 @@ As a result the super sensor signal can not be used for feedback applications ab Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360; figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); @@ -657,7 +666,7 @@ As a result the super sensor signal can not be used for feedback applications ab hold off; % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W2, freqs, 'color_i', 2); @@ -668,6 +677,7 @@ As a result the super sensor signal can not be used for feedback applications ab ylim([-180 180]); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; + linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); #+end_src @@ -770,8 +780,10 @@ The uncertainty bounds of the two individual sensor as well as the wanted maximu Dphi_Wu(abs(squeeze(freqresp(inv(Wu), freqs, 'Hz'))) > 1) = 360; figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); @@ -787,7 +799,7 @@ The uncertainty bounds of the two individual sensor as well as the wanted maximu hold off; % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W2, freqs, 'color_i', 2); @@ -879,29 +891,31 @@ The obtained complementary filters as well as the wanted upper bounds are shown #+begin_src matlab :exports none figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); - ax1 = subplot(2,1,1); + % Magnitude + ax1 = nexttile; hold on; plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$'); plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$'); set(gca,'ColorOrderIndex',1) plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$|H_1|$'); plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$|H_2|$'); - hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); ylabel('Magnitude'); set(gca, 'XTickLabel',[]); legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2); - ax2 = subplot(2,1,2); + % Phase + ax2 = nexttile; hold on; plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-'); hold off; xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); set(gca, 'XScale', 'log'); - yticks([-360:90:360]); + ylim([-90, 90]); yticks([-360:90:360]); linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); @@ -930,8 +944,10 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360; figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); @@ -951,7 +967,7 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s hold off; % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W2, freqs, 'color_i', 2); @@ -964,6 +980,7 @@ The $\mathcal{H}_\infty$ synthesis thus allows to design filters such that the s ylim([-180 180]); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; + linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); #+end_src @@ -1126,16 +1143,16 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt #+begin_src matlab :exports none figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); - ax1 = subplot(2,1,1); + % Magnitude + ax1 = nexttile; hold on; plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$'); plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$'); - set(gca,'ColorOrderIndex',1) plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$'); plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$'); - hold off; set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); ylabel('Magnitude'); @@ -1143,14 +1160,15 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt ylim([1e-3, 2]); legend('location', 'southeast', 'FontSize', 8); - ax2 = subplot(2,1,2); + % Magnitude + ax2 = nexttile; hold on; plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-'); hold off; xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); set(gca, 'XScale', 'log'); - yticks([-360:90:360]); + ylim([-90, 90]); yticks([-360:90:360]); linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); @@ -1283,8 +1301,10 @@ The uncertainty on the super sensor's dynamics is shown in Figure [[fig:super_se Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360; figure; + tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None'); + % Magnitude - ax1 = subplot(2,1,1); + ax1 = nexttile; hold on; plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); @@ -1304,7 +1324,7 @@ The uncertainty on the super sensor's dynamics is shown in Figure [[fig:super_se hold off; % Phase - ax2 = subplot(2,1,2); + ax2 = nexttile; hold on; plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W2, freqs, 'color_i', 2); @@ -1313,10 +1333,10 @@ The uncertainty on the super sensor's dynamics is shown in Figure [[fig:super_se plot(freqs, Dphi_Wu, 'k--'); plot(freqs, -Dphi_Wu, 'k--'); set(gca,'xscale','log'); - yticks(-180:90:180); - ylim([-180 180]); + ylim([-180 180]); yticks(-180:90:180); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; + linkaxes([ax1,ax2],'x'); xlim([freqs(1), freqs(end)]); #+end_src