diff --git a/docs/figs/cascade_hac_lac_tomography_cas.pdf b/docs/figs/cascade_hac_lac_tomography_cas.pdf new file mode 100644 index 0000000..6d08ba0 Binary files /dev/null and b/docs/figs/cascade_hac_lac_tomography_cas.pdf differ diff --git a/docs/figs/cascade_hac_lac_tomography_cas.png b/docs/figs/cascade_hac_lac_tomography_cas.png new file mode 100644 index 0000000..7460b30 Binary files /dev/null and b/docs/figs/cascade_hac_lac_tomography_cas.png differ diff --git a/docs/figs/cascade_hac_lac_tomography_psd.pdf b/docs/figs/cascade_hac_lac_tomography_psd.pdf new file mode 100644 index 0000000..277d8e3 Binary files /dev/null and b/docs/figs/cascade_hac_lac_tomography_psd.pdf differ diff --git a/docs/figs/cascade_hac_lac_tomography_psd.png b/docs/figs/cascade_hac_lac_tomography_psd.png new file mode 100644 index 0000000..6310b65 Binary files /dev/null and b/docs/figs/cascade_hac_lac_tomography_psd.png differ diff --git a/org/control_cascade.org b/org/control_cascade.org index 176c604..726c6dc 100644 --- a/org/control_cascade.org +++ b/org/control_cascade.org @@ -668,6 +668,159 @@ And we simulate the system. load('./mat/cascade_hac_lac.mat', 'cascade_hac_lac'); #+end_src +#+begin_src matlab + n_av = 4; + han_win = hanning(ceil(length(cascade_hac_lac.Em.En.Data(:,1))/n_av)); +#+end_src + +#+begin_src matlab + t = cascade_hac_lac.Em.En.Time; + Ts = t(2)-t(1); + + [pxx_ol, f] = pwelch(tomo_align_dist.Em.En.Data, han_win, [], [], 1/Ts); + [pxx_ca, ~] = pwelch(cascade_hac_lac.Em.En.Data, han_win, [], [], 1/Ts); +#+end_src + +#+begin_src matlab :exports none + figure; + ax1 = subplot(2, 3, 1); + hold on; + plot(f, sqrt(pxx_ol(:, 1))) + plot(f, sqrt(pxx_ca(:, 1))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{D_x}$ [$m/\sqrt{Hz}$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax2 = subplot(2, 3, 2); + hold on; + plot(f, sqrt(pxx_ol(:, 2))) + plot(f, sqrt(pxx_ca(:, 2))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{D_y}$ [$m/\sqrt{Hz}$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax3 = subplot(2, 3, 3); + hold on; + plot(f, sqrt(pxx_ol(:, 3))) + plot(f, sqrt(pxx_ca(:, 3))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{D_z}$ [$m/\sqrt{Hz}$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax4 = subplot(2, 3, 4); + hold on; + plot(f, sqrt(pxx_ol(:, 4))) + plot(f, sqrt(pxx_ca(:, 4))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{R_x}$ [$rad/\sqrt{Hz}$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax5 = subplot(2, 3, 5); + hold on; + plot(f, sqrt(pxx_ol(:, 5))) + plot(f, sqrt(pxx_ca(:, 5))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{R_y}$ [$rad/\sqrt{Hz}$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax6 = subplot(2, 3, 6); + hold on; + plot(f, sqrt(pxx_ol(:, 6)), 'DisplayName', '$\mu$-Station') + plot(f, sqrt(pxx_ca(:, 6)), 'DisplayName', 'Cascade') + hold off; + xlabel('Frequency [Hz]'); + ylabel('$\Gamma_{R_z}$ [$rad/\sqrt{Hz}$]'); + legend('location', 'southwest'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x'); + xlim([f(2), f(end)]) +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/cascade_hac_lac_tomography_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:cascade_hac_lac_tomography_psd +#+caption: ASD of the position error ([[./figs/cascade_hac_lac_tomography_psd.png][png]], [[./figs/cascade_hac_lac_tomography_psd.pdf][pdf]]) +[[file:figs/cascade_hac_lac_tomography_psd.png]] + +#+begin_src matlab :exports none + figure; + ax1 = subplot(2, 3, 1); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 1)))))) + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 1)))))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $D_x$ [$m$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax2 = subplot(2, 3, 2); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 2)))))) + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 2)))))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $D_y$ [$m$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax3 = subplot(2, 3, 3); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 3)))))) + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 3)))))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $D_z$ [$m$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax4 = subplot(2, 3, 4); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 4)))))) + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 4)))))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $R_x$ [$rad$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax5 = subplot(2, 3, 5); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 5)))))) + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 5)))))) + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $R_y$ [$rad$]'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + ax6 = subplot(2, 3, 6); + hold on; + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ol(:, 6))))), 'DisplayName', '$\mu$-Station') + plot(f, sqrt(flip(-cumtrapz(flip(f), flip(pxx_ca(:, 6))))), 'DisplayName', 'Cascade') + hold off; + xlabel('Frequency [Hz]'); + ylabel('CAS $R_z$ [$rad$]'); + legend('location', 'southwest'); + set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); + + linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x'); + xlim([f(2), f(end)]) +#+end_src + +#+header: :tangle no :exports results :results none :noweb yes +#+begin_src matlab :var filepath="figs/cascade_hac_lac_tomography_cas.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") +<> +#+end_src + +#+name: fig:cascade_hac_lac_tomography_cas +#+caption: Cumulative Amplitude Spectrum of the position error ([[./figs/cascade_hac_lac_tomography_cas.png][png]], [[./figs/cascade_hac_lac_tomography_cas.pdf][pdf]]) +[[file:figs/cascade_hac_lac_tomography_cas.png]] + #+begin_src matlab :exports none figure; ax1 = subplot(2, 3, 1);