Update figure using tiledlayout and nexttile

This commit is contained in:
Thomas Dehaeze 2020-10-25 10:01:53 +01:00
parent a0394c8136
commit 6923496e4f
19 changed files with 45 additions and 25 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -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]]. Both sensor dynamics in $[\frac{V}{m/s}]$ are shown in Figure [[fig:sensors_nominal_dynamics]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G1, freqs, 'Hz'))), '-', 'DisplayName', '$G_1(j\omega)$'); 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)$'); 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; hold off;
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*angle(squeeze(freqresp(G1, freqs, 'Hz'))), '-');
plot(freqs, 180/pi*angle(squeeze(freqresp(G2, 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]); ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+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 #+begin_src matlab :exports none
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plotMagUncertainty(W1, freqs, 'G', G1, 'color_i', 1, 'DisplayName', '$G_1$'); plotMagUncertainty(W1, freqs, 'G', G1, 'color_i', 1, 'DisplayName', '$G_1$');
plotMagUncertainty(W2, freqs, 'G', G2, 'color_i', 2, 'DisplayName', '$G_2$'); 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]) ylim([1e-2, 1e4])
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plotPhaseUncertainty(W1, freqs, 'G', G1, 'color_i', 1); plotPhaseUncertainty(W1, freqs, 'G', G1, 'color_i', 1);
plotPhaseUncertainty(W2, freqs, 'G', G2, 'color_i', 2); 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]); ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+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]]. The obtained complementary filters are shown in Figure [[fig:htwo_comp_filters]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), 'DisplayName', '$H_1$'); plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), 'DisplayName', '$H_1$');
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), 'DisplayName', '$H_2$'); 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); legend('location', 'northeast', 'FontSize', 8);
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(H1, freqs, 'Hz')))); plot(freqs, 180/pi*angle(squeeze(freqresp(H1, freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(H2, 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; Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360;
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$');
plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); 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; hold off;
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W1, freqs, 'color_i', 1);
plotPhaseUncertainty(W2, freqs, 'color_i', 2); 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]); ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+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; Dphi_Wu(abs(squeeze(freqresp(inv(Wu), freqs, 'Hz'))) > 1) = 360;
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$');
plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); 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; hold off;
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W1, freqs, 'color_i', 1);
plotPhaseUncertainty(W2, freqs, 'color_i', 2); 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 #+begin_src matlab :exports none
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = subplot(2,1,1); % Magnitude
ax1 = nexttile;
hold on; hold on;
plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$'); 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|$'); plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$');
set(gca,'ColorOrderIndex',1) set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$|H_1|$'); plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$|H_1|$');
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$|H_2|$'); plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$|H_2|$');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); ylabel('Magnitude');
set(gca, 'XTickLabel',[]); set(gca, 'XTickLabel',[]);
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2); legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
ax2 = subplot(2,1,2); % Phase
ax2 = nexttile;
hold on; hold on;
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
hold off; hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log'); set(gca, 'XScale', 'log');
yticks([-360:90:360]); ylim([-90, 90]); yticks([-360:90:360]);
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); 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; Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360;
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$');
plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); 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; hold off;
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W1, freqs, 'color_i', 1);
plotPhaseUncertainty(W2, freqs, 'color_i', 2); 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]); ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+end_src
@ -1126,16 +1143,16 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
#+begin_src matlab :exports none #+begin_src matlab :exports none
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
ax1 = subplot(2,1,1); % Magnitude
ax1 = nexttile;
hold on; hold on;
plot(freqs, 1./abs(squeeze(freqresp(Wu*W1, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_1|$'); 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|$'); plot(freqs, 1./abs(squeeze(freqresp(Wu*W2, freqs, 'Hz'))), '--', 'DisplayName', '$1/|W_uW_2|$');
set(gca,'ColorOrderIndex',1) set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$'); plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$'); plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); ylabel('Magnitude');
@ -1143,14 +1160,15 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
ylim([1e-3, 2]); ylim([1e-3, 2]);
legend('location', 'southeast', 'FontSize', 8); legend('location', 'southeast', 'FontSize', 8);
ax2 = subplot(2,1,2); % Magnitude
ax2 = nexttile;
hold on; hold on;
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-'); plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
hold off; hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log'); set(gca, 'XScale', 'log');
yticks([-360:90:360]); ylim([-90, 90]); yticks([-360:90:360]);
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); 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; Dphi_ss(abs(squeeze(freqresp(W2*H2, freqs, 'Hz'))) + abs(squeeze(freqresp(W1*H1, freqs, 'Hz'))) > 1) = 360;
figure; figure;
tiledlayout(2, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude % Magnitude
ax1 = subplot(2,1,1); ax1 = nexttile;
hold on; hold on;
plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$'); plotMagUncertainty(W1, freqs, 'color_i', 1, 'DisplayName', '$1 + W_1 \Delta_1$');
plotMagUncertainty(W2, freqs, 'color_i', 2, 'DisplayName', '$1 + W_2 \Delta_2$'); 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; hold off;
% Phase % Phase
ax2 = subplot(2,1,2); ax2 = nexttile;
hold on; hold on;
plotPhaseUncertainty(W1, freqs, 'color_i', 1); plotPhaseUncertainty(W1, freqs, 'color_i', 1);
plotPhaseUncertainty(W2, freqs, 'color_i', 2); 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--');
plot(freqs, -Dphi_Wu, 'k--'); plot(freqs, -Dphi_Wu, 'k--');
set(gca,'xscale','log'); set(gca,'xscale','log');
yticks(-180:90:180); ylim([-180 180]); yticks(-180:90:180);
ylim([-180 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off; hold off;
linkaxes([ax1,ax2],'x'); linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]); xlim([freqs(1), freqs(end)]);
#+end_src #+end_src