Update figure using tiledlayout and nexttile
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 99 KiB |
@ -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
|
||||
|