Change one measurement of folder
							
								
								
									
										
											BIN
										
									
								
								disturbance-control-system/figs/time_domain_relative_disp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 137 KiB | 
| @@ -1,4 +1,4 @@ | ||||
| #+TITLE:Measurements | ||||
| #+TITLE:Effect on the control system of each stages on the vibration of the station | ||||
| :DRAWER: | ||||
| #+STARTUP: overview | ||||
|  | ||||
| @@ -398,7 +398,11 @@ All the control systems are turned OFF, then, they are turned on one at a time. | ||||
|  | ||||
| Each measurement are done during 100s. | ||||
|  | ||||
| The settings of the voltage amplifier are shown on figure [[fig:amplifier_settings]]. | ||||
| The settings of the voltage amplifier are shown on figure [[fig:amplifier_settings]]: | ||||
| - gain of 60dB | ||||
| - AC/DC option set on DC | ||||
| - Low pass filter set at 1kHz | ||||
|  | ||||
| A first order low pass filter with a cut-off frequency of 1kHz is added before the voltage amplifier. | ||||
|  | ||||
| #+name: tab:control_system_on_off | ||||
| @@ -444,22 +448,44 @@ We load the data of the z axis of two geophones. | ||||
|   d_he = load('mat/data_018.mat', 'data'); d_he = d_he.data; | ||||
| #+end_src | ||||
|  | ||||
| ** Voltage to Velocity | ||||
| We convert the measured voltage to velocity using the function =voltageToVelocityL22= (accessible [[file:~/MEGA/These/meas/src/index.org][here]]). | ||||
|  | ||||
| #+begin_src matlab | ||||
|   gain = 60; % [dB] | ||||
|  | ||||
|   d_of(:, 1) = voltageToVelocityL22(d_of(:, 1), d_of(:, 3), gain); | ||||
|   d_ty(:, 1) = voltageToVelocityL22(d_ty(:, 1), d_ty(:, 3), gain); | ||||
|   d_ry(:, 1) = voltageToVelocityL22(d_ry(:, 1), d_ry(:, 3), gain); | ||||
|   d_sr(:, 1) = voltageToVelocityL22(d_sr(:, 1), d_sr(:, 3), gain); | ||||
|   d_rz(:, 1) = voltageToVelocityL22(d_rz(:, 1), d_rz(:, 3), gain); | ||||
|   d_he(:, 1) = voltageToVelocityL22(d_he(:, 1), d_he(:, 3), gain); | ||||
|  | ||||
|   d_of(:, 2) = voltageToVelocityL22(d_of(:, 2), d_of(:, 3), gain); | ||||
|   d_ty(:, 2) = voltageToVelocityL22(d_ty(:, 2), d_ty(:, 3), gain); | ||||
|   d_ry(:, 2) = voltageToVelocityL22(d_ry(:, 2), d_ry(:, 3), gain); | ||||
|   d_sr(:, 2) = voltageToVelocityL22(d_sr(:, 2), d_sr(:, 3), gain); | ||||
|   d_rz(:, 2) = voltageToVelocityL22(d_rz(:, 2), d_rz(:, 3), gain); | ||||
|   d_he(:, 2) = voltageToVelocityL22(d_he(:, 2), d_he(:, 3), gain); | ||||
| #+end_src | ||||
|  | ||||
| ** Analysis - Time Domain | ||||
| First, we can look at the time domain data and compare all the measurements: | ||||
| - comparison for the geophone at the sample location (figure [[fig:time_domain_sample_lpf]]) | ||||
| - comparison for the geophone on the granite (figure [[fig:time_domain_marble_lpf]]) | ||||
| - relative displacement of the sample with respect to the marble (figure [[fig:time_domain_marble_lpf]]) | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
| #+begin_src matlab | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(d_of(:, 3), d_of(:, 2), 'DisplayName', 'All OFF'; | ||||
|   plot(d_of(:, 3), d_of(:, 2), 'DisplayName', 'All OFF'); | ||||
|   plot(d_ty(:, 3), d_ty(:, 2), 'DisplayName', 'Ty ON'); | ||||
|   plot(d_ry(:, 3), d_ry(:, 2), 'DisplayName', 'Ry ON'); | ||||
|   plot(d_sr(:, 3), d_sr(:, 2), 'DisplayName', 'S-R ON'); | ||||
|   plot(d_rz(:, 3), d_rz(:, 2), 'DisplayName', 'Rz ON'); | ||||
|   plot(d_he(:, 3), d_he(:, 2), 'DisplayName', 'Hexa ON'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   xlabel('Time [s]'); ylabel('Velocity [m/s]'); | ||||
|   xlim([0, 50]); | ||||
|   legend('Location', 'bestoutside'); | ||||
| #+end_src | ||||
| @@ -476,7 +502,7 @@ First, we can look at the time domain data and compare all the measurements: | ||||
| [[file:figs/time_domain_sample_lpf.png]] | ||||
|  | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
| #+begin_src matlab | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(d_of(:, 3), d_of(:, 1), 'DisplayName', 'All OFF'); | ||||
| @@ -486,7 +512,7 @@ First, we can look at the time domain data and compare all the measurements: | ||||
|   plot(d_rz(:, 3), d_rz(:, 1), 'DisplayName', 'Rz ON'); | ||||
|   plot(d_he(:, 3), d_he(:, 1), 'DisplayName', 'Hexa ON'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   xlabel('Time [s]'); ylabel('Velocity [m/s]'); | ||||
|   xlim([0, 50]); | ||||
|   legend('Location', 'bestoutside'); | ||||
| #+end_src | ||||
| @@ -502,6 +528,32 @@ First, we can look at the time domain data and compare all the measurements: | ||||
| #+RESULTS: fig:time_domain_marble_lpf | ||||
| [[file:figs/time_domain_marble_lpf.png]] | ||||
|  | ||||
| #+begin_src matlab | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(d_of(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_of(:, 2)-d_of(:, 1), d_of(:, 3)), 'DisplayName', 'All OFF'); | ||||
|   plot(d_ty(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_ty(:, 2)-d_ty(:, 1), d_ty(:, 3)), 'DisplayName', 'Ty ON'); | ||||
|   plot(d_ry(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_ry(:, 2)-d_ry(:, 1), d_ry(:, 3)), 'DisplayName', 'Ry ON'); | ||||
|   plot(d_sr(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_sr(:, 2)-d_sr(:, 1), d_sr(:, 3)), 'DisplayName', 'S-R ON'); | ||||
|   plot(d_rz(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_rz(:, 2)-d_rz(:, 1), d_rz(:, 3)), 'DisplayName', 'Rz ON'); | ||||
|   plot(d_he(:, 3), 1e6*lsim(1/(1+s/(2*pi*0.5)), d_he(:, 2)-d_he(:, 1), d_he(:, 3)), 'DisplayName', 'Hexa ON'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Relative Displacement [$\mu m$]'); | ||||
|   xlim([0, 50]); | ||||
|   legend('Location', 'bestoutside'); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_relative_disp | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_relative_disp.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_relative_disp | ||||
| #+CAPTION: Relative displacement of the sample with respect to the marble | ||||
| #+RESULTS: fig:time_domain_relative_disp | ||||
| [[file:figs/time_domain_relative_disp.png]] | ||||
|  | ||||
| ** Analysis - Frequency Domain | ||||
| #+begin_src matlab :results none | ||||
|   dt = d_of(2, 3) - d_of(1, 3); | ||||
| @@ -534,7 +586,7 @@ And we compare all the signals (figures [[fig:psd_sample_comp_lpf]] and [[fig:ps | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   set(gca, 'yscale', 'log'); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$') | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{m/s}{\sqrt{Hz}}\right]$') | ||||
|   xlim([0.1, 500]); | ||||
|   legend('Location', 'southwest'); | ||||
| #+end_src | ||||
| @@ -546,7 +598,7 @@ And we compare all the signals (figures [[fig:psd_sample_comp_lpf]] and [[fig:ps | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_sample_comp_lpf | ||||
| #+CAPTION: Amplitude Spectral Density of the signal coming from the top geophone | ||||
| #+CAPTION: Amplitude Spectral Density of the sample velocity | ||||
| #+RESULTS: fig:psd_sample_comp_lpf | ||||
| [[file:figs/psd_sample_comp_lpf.png]] | ||||
|  | ||||
| @@ -562,7 +614,7 @@ And we compare all the signals (figures [[fig:psd_sample_comp_lpf]] and [[fig:ps | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_sample_comp_high_freq_lpf | ||||
| #+CAPTION: Amplitude Spectral Density of the signal coming from the top geophone (zoom at high frequencies) | ||||
| #+CAPTION: Amplitude Spectral Density of the sample velocity (zoom at high frequencies) | ||||
| #+RESULTS: fig:psd_sample_comp_high_freq_lpf | ||||
| [[file:figs/psd_sample_comp_high_freq_lpf.png]] | ||||
|  | ||||
| @@ -590,7 +642,7 @@ And we compare the Amplitude Spectral Densities (figures [[fig:psd_marble_comp_l | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   set(gca, 'yscale', 'log'); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$') | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{m/s}{\sqrt{Hz}}\right]$') | ||||
|   xlim([0.1, 500]); | ||||
|   legend('Location', 'northeast'); | ||||
| #+end_src | ||||
| @@ -602,7 +654,7 @@ And we compare the Amplitude Spectral Densities (figures [[fig:psd_marble_comp_l | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_marble_comp_lpf | ||||
| #+CAPTION: Amplitude Spectral Density of the signal coming from geophone located on the marble | ||||
| #+CAPTION: Amplitude Spectral Density of the marble velocity | ||||
| #+RESULTS: fig:psd_marble_comp_lpf | ||||
| [[file:figs/psd_marble_comp_lpf.png]] | ||||
|  | ||||
| @@ -619,7 +671,7 @@ And we compare the Amplitude Spectral Densities (figures [[fig:psd_marble_comp_l | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_marble_comp_lpf_high_freq | ||||
| #+CAPTION: Amplitude Spectral Density of the signal coming from the geophone located on the marble (zoom at high frequencies) | ||||
| #+CAPTION: Amplitude Spectral Density of the marble velocity (zoom at high frequencies) | ||||
| #+RESULTS: fig:psd_marble_comp_lpf_high_freq | ||||
| [[file:figs/psd_marble_comp_lpf_high_freq.png]] | ||||
|  | ||||
| @@ -779,404 +831,3 @@ First, we compute the Power Spectral Density of the signals coming from the Geop | ||||
| #+begin_important | ||||
|   Even tough the Hexapod's driver vibrates quite a lot, it does not generate significant vibrations of the granite when either placed on the granite or on the ground. | ||||
| #+end_important | ||||
|  | ||||
| * Transfer function from one stage to the other | ||||
|   :PROPERTIES: | ||||
|   :header-args:matlab+: :tangle matlab/tf_stages_geophone.m | ||||
|   :header-args:matlab+: :comments org :mkdirp yes | ||||
|   :END: | ||||
|   <<sec:tf_stages_geophone>> | ||||
|  | ||||
| ** ZIP file containing the data and matlab files                     :ignore: | ||||
| #+begin_src bash :exports none :results none | ||||
|   if [ matlab/tf_stages_geophone.m -nt data/tf_stages_geophone.zip ]; then | ||||
|     cp matlab/tf_stages_geophone.m tf_stages_geophone.m; | ||||
|     zip data/tf_stages_geophone \ | ||||
|         mat/data_010.mat \ | ||||
|         mat/data_011.mat \ | ||||
|         mat/data_012.mat \ | ||||
|         tf_stages_geophone.m | ||||
|     rm tf_stages_geophone.m; | ||||
|   fi | ||||
| #+end_src | ||||
|  | ||||
| #+begin_note | ||||
|   All the files (data and Matlab scripts) are accessible [[file:data/tf_stages_geophone.zip][here]]. | ||||
| #+end_note | ||||
|  | ||||
| ** Experimental Setup | ||||
| For all the measurements in this section: | ||||
| - all the control stages are OFF. | ||||
| - the measurements are on the $z$ direction | ||||
|  | ||||
| *** From Marble to Ty - =mat/meas_010.mat= | ||||
| One geophone is on the marble, one is on the Ty stage (see figures [[fig:setup_m_ty]], [[fig:setup_m_ty_zoom]] and [[fig:setup_m_ty_top]]). | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ground      | | ||||
| |      2 | Ty          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_m_ty | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155330.jpg]] | ||||
|  | ||||
| #+name: fig:setup_m_ty_zoom | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage - Close up view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155335.jpg]] | ||||
|  | ||||
| #+name: fig:setup_m_ty_top | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage - Top view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155342.jpg]] | ||||
|  | ||||
| *** From Marble to Ry - =mat/meas_011.mat= | ||||
| One geophone is on the marble, one is on the Ry stage (see figure [[fig:setup_m_ry]]) | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ground      | | ||||
| |      2 | Ry          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_m_ry | ||||
| #+caption: Setup with one geophone on the marble and one on top of the Tilt Stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_163919.jpg]] | ||||
|  | ||||
| *** From Ty to Ry - =mat/meas_012.mat= | ||||
| One geophone is on the Ty stage, one is on the Ry stage (see figures [[fig:setup_ty_ry]], [[fig:setup_ty_ry_top]] and [[fig:setup_ty_ry_zoom]]) | ||||
| One geophone on the Ty stage, one geophone on the Ry stage. | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ty          | | ||||
| |      2 | Ry          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_ty_ry | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170405.jpg]] | ||||
|  | ||||
| #+name: fig:setup_ty_ry_top | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage - Top view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170418.jpg]] | ||||
|  | ||||
| #+name: fig:setup_ty_ry_zoom | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage - Close up view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170425.jpg]] | ||||
|  | ||||
| ** Matlab Init                                              :noexport:ignore: | ||||
| #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) | ||||
|   <<matlab-dir>> | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :exports none :results silent :noweb yes | ||||
|   <<matlab-init>> | ||||
| #+end_src | ||||
|  | ||||
| ** Load data | ||||
| We load the data of the z axis of two geophones. | ||||
| #+begin_src matlab :results none | ||||
|   m_ty  = load('mat/data_010.mat', 'data'); m_ty  = m_ty.data; | ||||
|   m_ry  = load('mat/data_011.mat', 'data'); m_ry  = m_ry.data; | ||||
|   ty_ry = load('mat/data_012.mat', 'data'); ty_ry = ty_ry.data; | ||||
| #+end_src | ||||
|  | ||||
| ** Analysis - Time Domain | ||||
| First, we can look at the time domain data. | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(m_ty(:, 3), m_ty(:, 1), 'DisplayName', 'Marble'); | ||||
|   plot(m_ty(:, 3), m_ty(:, 2), 'DisplayName', 'Ty'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ty | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_m_ty.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ty | ||||
| #+CAPTION: Time domain - Marble and translation stage | ||||
| #+RESULTS: fig:time_domain_m_ty | ||||
| [[file:figs/time_domain_m_ty.png]] | ||||
|  | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(m_ry(:, 3), m_ry(:, 1), 'DisplayName', 'Marble'); | ||||
|   plot(m_ry(:, 3), m_ry(:, 2), 'DisplayName', 'Ty'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ry | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_m_ry.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ry | ||||
| #+CAPTION: Time domain - Marble and tilt stage | ||||
| #+RESULTS: fig:time_domain_m_ry | ||||
| [[file:figs/time_domain_m_ry.png]] | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(ty_ry(:, 3), ty_ry(:, 1), 'DisplayName', 'Ty'); | ||||
|   plot(ty_ry(:, 3), ty_ry(:, 2), 'DisplayName', 'Ry'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_ty_ry | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_ty_ry.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_ty_ry | ||||
| #+CAPTION: Time domain - Translation stage and tilt stage | ||||
| #+RESULTS: fig:time_domain_ty_ry | ||||
| [[file:figs/time_domain_ty_ry.png]] | ||||
|  | ||||
| ** Analysis - Frequency Domain | ||||
| #+begin_src matlab :results none | ||||
|   dt = m_ty(2, 3) - m_ty(1, 3); | ||||
|  | ||||
|   Fs = 1/dt; | ||||
|   win = hanning(ceil(1*Fs)); | ||||
| #+end_src | ||||
|  | ||||
| First, we compute the transfer function estimate between the two geophones for the 3 experiments (figure [[fig:compare_tf_geophones]]). We also plot their coherence (figure [[fig:coherence_two_geophones]]). | ||||
| #+begin_src matlab :results none | ||||
|   [T_m_ty,  f] = tfestimate(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
|   [T_m_ry,  ~] = tfestimate(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
|   [T_ty_ry, ~] = tfestimate(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   ax1 = subplot(2, 1, 1); | ||||
|   hold on; | ||||
|   plot(f, abs(T_m_ty),  'DisplayName', 'Marble - Ty'); | ||||
|   plot(f, abs(T_m_ry),  'DisplayName', 'Marble - Ry'); | ||||
|   plot(f, abs(T_ty_ry), 'DisplayName', 'Ty - Ry'); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); | ||||
|   set(gca, 'XTickLabel',[]); | ||||
|   ylabel('Magnitude'); | ||||
|   legend('Location', 'northwest'); | ||||
|  | ||||
|   ax2 = subplot(2, 1, 2); | ||||
|   hold on; | ||||
|   plot(f, mod(180+180/pi*phase(T_m_ty),  360)-180); | ||||
|   plot(f, mod(180+180/pi*phase(T_m_ry),  360)-180); | ||||
|   plot(f, mod(180+180/pi*phase(T_ty_ry), 360)-180); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   ylim([-180, 180]); | ||||
|   yticks([-180, -90, 0, 90, 180]); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Phase'); | ||||
|  | ||||
|   linkaxes([ax1,ax2],'x'); | ||||
|   xlim([10, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:compare_tf_geophones | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/compare_tf_geophones.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:compare_tf_geophones | ||||
| #+CAPTION: Transfer function from the first geophone to the second geophone for the three experiments | ||||
| #+RESULTS: fig:compare_tf_geophones | ||||
| [[file:figs/compare_tf_geophones.png]] | ||||
|  | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   [coh_m_ty,  f] = mscohere(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
|   [coh_m_ry,  ~] = mscohere(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
|   [coh_ty_ry, ~] = mscohere(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none :exports none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(f, coh_m_ty,  'DisplayName', 'Marble - Ty'); | ||||
|   plot(f, coh_m_ry,  'DisplayName', 'Marble - Ry'); | ||||
|   plot(f, coh_ty_ry, 'DisplayName', 'Ty - Ry'); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Coherence'); | ||||
|   ylim([0, 1]); xlim([1, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:coherence_two_geophones | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/coherence_two_geophones.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:coherence_two_geophones | ||||
| #+CAPTION: Coherence between the two geophones for the three experiments | ||||
| #+RESULTS: fig:coherence_two_geophones | ||||
| [[file:figs/coherence_two_geophones.png]] | ||||
|  | ||||
| ** Conclusion | ||||
| #+begin_important | ||||
|   These measurements are not relevant. | ||||
| #+end_important | ||||
|  | ||||
| * Effect of the Ty Control System on the vibration of the Sample :noexport:ignore: | ||||
| ** Experimental Setup | ||||
| One geophone is on the marble, the other at the sample location (see figures [[fig:setup_ty]]). | ||||
|  | ||||
| The signal from the top geophone goes through the slip-ring. | ||||
|  | ||||
| #+name: fig:setup_ty | ||||
| #+caption: Experimental Setup | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_112615.jpg]] | ||||
|  | ||||
| Two measurements are done: | ||||
| | Setup                | Data File          | | ||||
| |----------------------+--------------------| | ||||
| | Control of Ty is on  | =mat/data_001.mat= | | ||||
| | Control of Ty is off | =mat/data_002.mat= | | ||||
|  | ||||
| For each of the measurements, the data are: | ||||
| | Variable | Description                                                        | | ||||
| |----------+--------------------------------------------------------------------| | ||||
| | =t=      | Time Vector                                                        | | ||||
| | =x1=     | Voltage measured across the geophone placed on the marble          | | ||||
| | =x2=     | Voltage measured across the geophone placed at the sample location | | ||||
|  | ||||
| Measurements are 50s long. | ||||
|  | ||||
| ** Matlab Init                                              :noexport:ignore: | ||||
| #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) | ||||
|   <<matlab-dir>> | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :exports none :results silent :noweb yes | ||||
|   <<matlab-init>> | ||||
| #+end_src | ||||
|  | ||||
| ** Load data | ||||
| We load the data of the z axis of two geophones. | ||||
| #+begin_src matlab :results none | ||||
|   tyOn  = load('mat/data_001.mat', 't', 'x1', 'x2'); | ||||
|   tyOff = load('mat/data_002.mat', 't', 'x1', 'x2'); | ||||
| #+end_src | ||||
|  | ||||
| ** Analysis - Time Domain | ||||
| #+begin_src matlab :results none | ||||
|   dt = tyOn.t(2)-tyOn.t(1); | ||||
|   Fs = 1/dt; | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   subplot(1, 2, 1); | ||||
|   hold on; | ||||
|   plot(tyOn.t, tyOn.x1, 'DisplayName', 'Ty ON - Marble'); | ||||
|   plot(tyOff.t, tyOff.x1, 'DisplayName', 'Ty OFF - Marble'); | ||||
|   hold off; | ||||
|   legend(); | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   xlim([0, 50]); | ||||
|  | ||||
|   subplot(1, 2, 2); | ||||
|   hold on; | ||||
|   plot(tyOn.t, tyOn.x2, 'DisplayName', 'Ty ON - Sample'); | ||||
|   plot(tyOff.t, tyOff.x2, 'DisplayName', 'Ty OFF - Sample'); | ||||
|   hold off; | ||||
|   legend(); | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   xlim([0, 50]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_effect_ty | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_effect_ty.pdf" :var figsize="full-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_effect_ty | ||||
| #+CAPTION: Effect of the Ty control system on the vibrations of the marble and sample | ||||
| #+RESULTS: fig:time_domain_effect_ty | ||||
| [[file:figs/time_domain_effect_ty.png]] | ||||
|  | ||||
| ** Analysis - Frequency Domain | ||||
| #+begin_src matlab :results none | ||||
|   Fs = 1/dt; | ||||
|   win = hanning(ceil(10*Fs)); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   [pxOn1, f] = pwelch(tyOn.x1, win, [], [], Fs); | ||||
|   [pxOn2, ~] = pwelch(tyOn.x2, win, [], [], Fs); | ||||
|  | ||||
|   [pxOff1, ~] = pwelch(tyOff.x1, win, [], [], Fs); | ||||
|   [pxOff2, ~] = pwelch(tyOff.x2, win, [], [], Fs); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   subplot(1, 2, 1); | ||||
|   hold on; | ||||
|   plot(f, sqrt(pxOn1), 'DisplayName', 'Ty ON - Marble'); | ||||
|   plot(f, sqrt(pxOff1), 'DisplayName', 'Ty OFF - Marble'); | ||||
|   hold off; | ||||
|   legend(); | ||||
|   set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); | ||||
|   xlim([0.1, 500]); ylim([1e-4, 1]); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$') | ||||
|  | ||||
|   subplot(1, 2, 2); | ||||
|   hold on; | ||||
|   plot(f, sqrt(pxOn2), 'DisplayName', 'Ty ON - Sample'); | ||||
|   plot(f, sqrt(pxOff2), 'DisplayName', 'Ty OFF - Sample'); | ||||
|   hold off; | ||||
|   legend(); | ||||
|   set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Amplitude Spectral Density $\left[\frac{V}{\sqrt{Hz}}\right]$') | ||||
|   xlim([0.1, 500]); ylim([1e-4, 1]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_effect_ty | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/psd_effect_ty.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:psd_effect_ty | ||||
| #+CAPTION: Amplitude Spectral Density - Effect of the Ty control system | ||||
| #+RESULTS: fig:psd_effect_ty | ||||
| [[file:figs/psd_effect_ty.png]] | ||||
|  | ||||
| ** Conclusion | ||||
|   | ||||
| Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB | 
| Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB | 
| Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB | 
| Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB | 
| Before Width: | Height: | Size: 4.2 MiB After Width: | Height: | Size: 4.2 MiB | 
| Before Width: | Height: | Size: 3.8 MiB After Width: | Height: | Size: 3.8 MiB | 
| Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB | 
| Before Width: | Height: | Size: 4.2 MiB After Width: | Height: | Size: 4.2 MiB | 
| Before Width: | Height: | Size: 3.9 MiB After Width: | Height: | Size: 3.9 MiB | 
| Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 3.0 MiB | 
| Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 3.4 MiB | 
| Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB | 
							
								
								
									
										124
									
								
								other-measurements/matlab/tf_stages_geophone.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,124 @@ | ||||
| %% Clear Workspace and Close figures | ||||
| clear; close all; clc; | ||||
|  | ||||
| %% Intialize Laplace variable | ||||
| s = zpk('s'); | ||||
|  | ||||
| % Load data | ||||
| % We load the data of the z axis of two geophones. | ||||
|  | ||||
| m_ty  = load('mat/data_010.mat', 'data'); m_ty  = m_ty.data; | ||||
| m_ry  = load('mat/data_011.mat', 'data'); m_ry  = m_ry.data; | ||||
| ty_ry = load('mat/data_012.mat', 'data'); ty_ry = ty_ry.data; | ||||
|  | ||||
| % Analysis - Time Domain | ||||
| % First, we can look at the time domain data. | ||||
|  | ||||
|  | ||||
| figure; | ||||
| hold on; | ||||
| plot(m_ty(:, 3), m_ty(:, 1), 'DisplayName', 'Marble'); | ||||
| plot(m_ty(:, 3), m_ty(:, 2), 'DisplayName', 'Ty'); | ||||
| hold off; | ||||
| xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
| legend('Location', 'northeast'); | ||||
| xlim([0, 500]); | ||||
|  | ||||
|  | ||||
|  | ||||
| % #+NAME: fig:time_domain_m_ty | ||||
| % #+CAPTION: Time domain - Marble and translation stage | ||||
| % #+RESULTS: fig:time_domain_m_ty | ||||
| % [[file:figs/time_domain_m_ty.png]] | ||||
|  | ||||
|  | ||||
|  | ||||
| figure; | ||||
| hold on; | ||||
| plot(m_ry(:, 3), m_ry(:, 1), 'DisplayName', 'Marble'); | ||||
| plot(m_ry(:, 3), m_ry(:, 2), 'DisplayName', 'Ty'); | ||||
| hold off; | ||||
| xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
| legend('Location', 'northeast'); | ||||
| xlim([0, 500]); | ||||
|  | ||||
|  | ||||
|  | ||||
| % #+NAME: fig:time_domain_m_ry | ||||
| % #+CAPTION: Time domain - Marble and tilt stage | ||||
| % #+RESULTS: fig:time_domain_m_ry | ||||
| % [[file:figs/time_domain_m_ry.png]] | ||||
|  | ||||
|  | ||||
| figure; | ||||
| hold on; | ||||
| plot(ty_ry(:, 3), ty_ry(:, 1), 'DisplayName', 'Ty'); | ||||
| plot(ty_ry(:, 3), ty_ry(:, 2), 'DisplayName', 'Ry'); | ||||
| hold off; | ||||
| xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
| legend('Location', 'northeast'); | ||||
| xlim([0, 500]); | ||||
|  | ||||
| % Analysis - Frequency Domain | ||||
|  | ||||
| dt = m_ty(2, 3) - m_ty(1, 3); | ||||
|  | ||||
| Fs = 1/dt; | ||||
| win = hanning(ceil(1*Fs)); | ||||
|  | ||||
|  | ||||
|  | ||||
| % First, we compute the transfer function estimate between the two geophones for the 3 experiments (figure [[fig:compare_tf_geophones]]). We also plot their coherence (figure [[fig:coherence_two_geophones]]). | ||||
|  | ||||
| [T_m_ty,  f] = tfestimate(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
| [T_m_ry,  ~] = tfestimate(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
| [T_ty_ry, ~] = tfestimate(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
|  | ||||
| figure; | ||||
| ax1 = subplot(2, 1, 1); | ||||
| hold on; | ||||
| plot(f, abs(T_m_ty),  'DisplayName', 'Marble - Ty'); | ||||
| plot(f, abs(T_m_ry),  'DisplayName', 'Marble - Ry'); | ||||
| plot(f, abs(T_ty_ry), 'DisplayName', 'Ty - Ry'); | ||||
| hold off; | ||||
| set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); | ||||
| set(gca, 'XTickLabel',[]); | ||||
| ylabel('Magnitude'); | ||||
| legend('Location', 'northwest'); | ||||
|  | ||||
| ax2 = subplot(2, 1, 2); | ||||
| hold on; | ||||
| plot(f, mod(180+180/pi*phase(T_m_ty),  360)-180); | ||||
| plot(f, mod(180+180/pi*phase(T_m_ry),  360)-180); | ||||
| plot(f, mod(180+180/pi*phase(T_ty_ry), 360)-180); | ||||
| hold off; | ||||
| set(gca, 'xscale', 'log'); | ||||
| ylim([-180, 180]); | ||||
| yticks([-180, -90, 0, 90, 180]); | ||||
| xlabel('Frequency [Hz]'); ylabel('Phase'); | ||||
|  | ||||
| linkaxes([ax1,ax2],'x'); | ||||
| xlim([10, 500]); | ||||
|  | ||||
|  | ||||
|  | ||||
| % #+NAME: fig:compare_tf_geophones | ||||
| % #+CAPTION: Transfer function from the first geophone to the second geophone for the three experiments | ||||
| % #+RESULTS: fig:compare_tf_geophones | ||||
| % [[file:figs/compare_tf_geophones.png]] | ||||
|  | ||||
|  | ||||
|  | ||||
| [coh_m_ty,  f] = mscohere(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
| [coh_m_ry,  ~] = mscohere(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
| [coh_ty_ry, ~] = mscohere(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
|  | ||||
| figure; | ||||
| hold on; | ||||
| plot(f, coh_m_ty,  'DisplayName', 'Marble - Ty'); | ||||
| plot(f, coh_m_ry,  'DisplayName', 'Marble - Ry'); | ||||
| plot(f, coh_ty_ry, 'DisplayName', 'Ty - Ry'); | ||||
| hold off; | ||||
| set(gca, 'xscale', 'log'); | ||||
| xlabel('Frequency [Hz]'); ylabel('Coherence'); | ||||
| ylim([0, 1]); xlim([1, 500]); | ||||
							
								
								
									
										686
									
								
								other-measurements/tf_geophone_stages.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,686 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||||
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> | ||||
| <head> | ||||
| <!-- 2019-05-15 mer. 17:22 --> | ||||
| <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||||
| <title>Transfer function from velocity of one stage to the velocity of another stage using geophones</title> | ||||
| <meta name="generator" content="Org mode" /> | ||||
| <meta name="author" content="Dehaeze Thomas" /> | ||||
| <style type="text/css"> | ||||
|  <!--/*--><![CDATA[/*><!--*/ | ||||
|   .title  { text-align: center; | ||||
|              margin-bottom: .2em; } | ||||
|   .subtitle { text-align: center; | ||||
|               font-size: medium; | ||||
|               font-weight: bold; | ||||
|               margin-top:0; } | ||||
|   .todo   { font-family: monospace; color: red; } | ||||
|   .done   { font-family: monospace; color: green; } | ||||
|   .priority { font-family: monospace; color: orange; } | ||||
|   .tag    { background-color: #eee; font-family: monospace; | ||||
|             padding: 2px; font-size: 80%; font-weight: normal; } | ||||
|   .timestamp { color: #bebebe; } | ||||
|   .timestamp-kwd { color: #5f9ea0; } | ||||
|   .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; } | ||||
|   .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; } | ||||
|   .org-center { margin-left: auto; margin-right: auto; text-align: center; } | ||||
|   .underline { text-decoration: underline; } | ||||
|   #postamble p, #preamble p { font-size: 90%; margin: .2em; } | ||||
|   p.verse { margin-left: 3%; } | ||||
|   pre { | ||||
|     border: 1px solid #ccc; | ||||
|     box-shadow: 3px 3px 3px #eee; | ||||
|     padding: 8pt; | ||||
|     font-family: monospace; | ||||
|     overflow: auto; | ||||
|     margin: 1.2em; | ||||
|   } | ||||
|   pre.src { | ||||
|     position: relative; | ||||
|     overflow: visible; | ||||
|     padding-top: 1.2em; | ||||
|   } | ||||
|   pre.src:before { | ||||
|     display: none; | ||||
|     position: absolute; | ||||
|     background-color: white; | ||||
|     top: -10px; | ||||
|     right: 10px; | ||||
|     padding: 3px; | ||||
|     border: 1px solid black; | ||||
|   } | ||||
|   pre.src:hover:before { display: inline;} | ||||
|   /* Languages per Org manual */ | ||||
|   pre.src-asymptote:before { content: 'Asymptote'; } | ||||
|   pre.src-awk:before { content: 'Awk'; } | ||||
|   pre.src-C:before { content: 'C'; } | ||||
|   /* pre.src-C++ doesn't work in CSS */ | ||||
|   pre.src-clojure:before { content: 'Clojure'; } | ||||
|   pre.src-css:before { content: 'CSS'; } | ||||
|   pre.src-D:before { content: 'D'; } | ||||
|   pre.src-ditaa:before { content: 'ditaa'; } | ||||
|   pre.src-dot:before { content: 'Graphviz'; } | ||||
|   pre.src-calc:before { content: 'Emacs Calc'; } | ||||
|   pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } | ||||
|   pre.src-fortran:before { content: 'Fortran'; } | ||||
|   pre.src-gnuplot:before { content: 'gnuplot'; } | ||||
|   pre.src-haskell:before { content: 'Haskell'; } | ||||
|   pre.src-hledger:before { content: 'hledger'; } | ||||
|   pre.src-java:before { content: 'Java'; } | ||||
|   pre.src-js:before { content: 'Javascript'; } | ||||
|   pre.src-latex:before { content: 'LaTeX'; } | ||||
|   pre.src-ledger:before { content: 'Ledger'; } | ||||
|   pre.src-lisp:before { content: 'Lisp'; } | ||||
|   pre.src-lilypond:before { content: 'Lilypond'; } | ||||
|   pre.src-lua:before { content: 'Lua'; } | ||||
|   pre.src-matlab:before { content: 'MATLAB'; } | ||||
|   pre.src-mscgen:before { content: 'Mscgen'; } | ||||
|   pre.src-ocaml:before { content: 'Objective Caml'; } | ||||
|   pre.src-octave:before { content: 'Octave'; } | ||||
|   pre.src-org:before { content: 'Org mode'; } | ||||
|   pre.src-oz:before { content: 'OZ'; } | ||||
|   pre.src-plantuml:before { content: 'Plantuml'; } | ||||
|   pre.src-processing:before { content: 'Processing.js'; } | ||||
|   pre.src-python:before { content: 'Python'; } | ||||
|   pre.src-R:before { content: 'R'; } | ||||
|   pre.src-ruby:before { content: 'Ruby'; } | ||||
|   pre.src-sass:before { content: 'Sass'; } | ||||
|   pre.src-scheme:before { content: 'Scheme'; } | ||||
|   pre.src-screen:before { content: 'Gnu Screen'; } | ||||
|   pre.src-sed:before { content: 'Sed'; } | ||||
|   pre.src-sh:before { content: 'shell'; } | ||||
|   pre.src-sql:before { content: 'SQL'; } | ||||
|   pre.src-sqlite:before { content: 'SQLite'; } | ||||
|   /* additional languages in org.el's org-babel-load-languages alist */ | ||||
|   pre.src-forth:before { content: 'Forth'; } | ||||
|   pre.src-io:before { content: 'IO'; } | ||||
|   pre.src-J:before { content: 'J'; } | ||||
|   pre.src-makefile:before { content: 'Makefile'; } | ||||
|   pre.src-maxima:before { content: 'Maxima'; } | ||||
|   pre.src-perl:before { content: 'Perl'; } | ||||
|   pre.src-picolisp:before { content: 'Pico Lisp'; } | ||||
|   pre.src-scala:before { content: 'Scala'; } | ||||
|   pre.src-shell:before { content: 'Shell Script'; } | ||||
|   pre.src-ebnf2ps:before { content: 'ebfn2ps'; } | ||||
|   /* additional language identifiers per "defun org-babel-execute" | ||||
|        in ob-*.el */ | ||||
|   pre.src-cpp:before  { content: 'C++'; } | ||||
|   pre.src-abc:before  { content: 'ABC'; } | ||||
|   pre.src-coq:before  { content: 'Coq'; } | ||||
|   pre.src-groovy:before  { content: 'Groovy'; } | ||||
|   /* additional language identifiers from org-babel-shell-names in | ||||
|      ob-shell.el: ob-shell is the only babel language using a lambda to put | ||||
|      the execution function name together. */ | ||||
|   pre.src-bash:before  { content: 'bash'; } | ||||
|   pre.src-csh:before  { content: 'csh'; } | ||||
|   pre.src-ash:before  { content: 'ash'; } | ||||
|   pre.src-dash:before  { content: 'dash'; } | ||||
|   pre.src-ksh:before  { content: 'ksh'; } | ||||
|   pre.src-mksh:before  { content: 'mksh'; } | ||||
|   pre.src-posh:before  { content: 'posh'; } | ||||
|   /* Additional Emacs modes also supported by the LaTeX listings package */ | ||||
|   pre.src-ada:before { content: 'Ada'; } | ||||
|   pre.src-asm:before { content: 'Assembler'; } | ||||
|   pre.src-caml:before { content: 'Caml'; } | ||||
|   pre.src-delphi:before { content: 'Delphi'; } | ||||
|   pre.src-html:before { content: 'HTML'; } | ||||
|   pre.src-idl:before { content: 'IDL'; } | ||||
|   pre.src-mercury:before { content: 'Mercury'; } | ||||
|   pre.src-metapost:before { content: 'MetaPost'; } | ||||
|   pre.src-modula-2:before { content: 'Modula-2'; } | ||||
|   pre.src-pascal:before { content: 'Pascal'; } | ||||
|   pre.src-ps:before { content: 'PostScript'; } | ||||
|   pre.src-prolog:before { content: 'Prolog'; } | ||||
|   pre.src-simula:before { content: 'Simula'; } | ||||
|   pre.src-tcl:before { content: 'tcl'; } | ||||
|   pre.src-tex:before { content: 'TeX'; } | ||||
|   pre.src-plain-tex:before { content: 'Plain TeX'; } | ||||
|   pre.src-verilog:before { content: 'Verilog'; } | ||||
|   pre.src-vhdl:before { content: 'VHDL'; } | ||||
|   pre.src-xml:before { content: 'XML'; } | ||||
|   pre.src-nxml:before { content: 'XML'; } | ||||
|   /* add a generic configuration mode; LaTeX export needs an additional | ||||
|      (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ | ||||
|   pre.src-conf:before { content: 'Configuration File'; } | ||||
| 
 | ||||
|   table { border-collapse:collapse; } | ||||
|   caption.t-above { caption-side: top; } | ||||
|   caption.t-bottom { caption-side: bottom; } | ||||
|   td, th { vertical-align:top;  } | ||||
|   th.org-right  { text-align: center;  } | ||||
|   th.org-left   { text-align: center;   } | ||||
|   th.org-center { text-align: center; } | ||||
|   td.org-right  { text-align: right;  } | ||||
|   td.org-left   { text-align: left;   } | ||||
|   td.org-center { text-align: center; } | ||||
|   dt { font-weight: bold; } | ||||
|   .footpara { display: inline; } | ||||
|   .footdef  { margin-bottom: 1em; } | ||||
|   .figure { padding: 1em; } | ||||
|   .figure p { text-align: center; } | ||||
|   .equation-container { | ||||
|     display: table; | ||||
|     text-align: center; | ||||
|     width: 100%; | ||||
|   } | ||||
|   .equation { | ||||
|     vertical-align: middle; | ||||
|   } | ||||
|   .equation-label { | ||||
|     display: table-cell; | ||||
|     text-align: right; | ||||
|     vertical-align: middle; | ||||
|   } | ||||
|   .inlinetask { | ||||
|     padding: 10px; | ||||
|     border: 2px solid gray; | ||||
|     margin: 10px; | ||||
|     background: #ffffcc; | ||||
|   } | ||||
|   #org-div-home-and-up | ||||
|    { text-align: right; font-size: 70%; white-space: nowrap; } | ||||
|   textarea { overflow-x: auto; } | ||||
|   .linenr { font-size: smaller } | ||||
|   .code-highlighted { background-color: #ffff00; } | ||||
|   .org-info-js_info-navigation { border-style: none; } | ||||
|   #org-info-js_console-label | ||||
|     { font-size: 10px; font-weight: bold; white-space: nowrap; } | ||||
|   .org-info-js_search-highlight | ||||
|     { background-color: #ffff00; color: #000000; font-weight: bold; } | ||||
|   .org-svg { width: 90%; } | ||||
|   /*]]>*/--> | ||||
| </style> | ||||
| <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/> | ||||
| <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/> | ||||
| <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/> | ||||
| <script type="text/javascript" src="../js/jquery.min.js"></script> | ||||
| <script type="text/javascript" src="../js/bootstrap.min.js"></script> | ||||
| <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script> | ||||
| <script type="text/javascript" src="../js/readtheorg.js"></script> | ||||
| <script type="text/javascript"> | ||||
| /* | ||||
| @licstart  The following is the entire license notice for the | ||||
| JavaScript code in this tag. | ||||
| 
 | ||||
| Copyright (C) 2012-2019 Free Software Foundation, Inc. | ||||
| 
 | ||||
| The JavaScript code in this tag is free software: you can | ||||
| redistribute it and/or modify it under the terms of the GNU | ||||
| General Public License (GNU GPL) as published by the Free Software | ||||
| Foundation, either version 3 of the License, or (at your option) | ||||
| any later version.  The code is distributed WITHOUT ANY WARRANTY; | ||||
| without even the implied warranty of MERCHANTABILITY or FITNESS | ||||
| FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details. | ||||
| 
 | ||||
| As additional permission under GNU GPL version 3 section 7, you | ||||
| may distribute non-source (e.g., minimized or compacted) forms of | ||||
| that code without the copy of the GNU GPL normally required by | ||||
| section 4, provided you include this license notice and a URL | ||||
| through which recipients can access the Corresponding Source. | ||||
| 
 | ||||
| 
 | ||||
| @licend  The above is the entire license notice | ||||
| for the JavaScript code in this tag. | ||||
| */ | ||||
| <!--/*--><![CDATA[/*><!--*/ | ||||
|  function CodeHighlightOn(elem, id) | ||||
|  { | ||||
|    var target = document.getElementById(id); | ||||
|    if(null != target) { | ||||
|      elem.cacheClassElem = elem.className; | ||||
|      elem.cacheClassTarget = target.className; | ||||
|      target.className = "code-highlighted"; | ||||
|      elem.className   = "code-highlighted"; | ||||
|    } | ||||
|  } | ||||
|  function CodeHighlightOff(elem, id) | ||||
|  { | ||||
|    var target = document.getElementById(id); | ||||
|    if(elem.cacheClassElem) | ||||
|      elem.className = elem.cacheClassElem; | ||||
|    if(elem.cacheClassTarget) | ||||
|      target.className = elem.cacheClassTarget; | ||||
|  } | ||||
| /*]]>*///--> | ||||
| </script> | ||||
| <script type="text/x-mathjax-config"> | ||||
|     MathJax.Hub.Config({ | ||||
|         displayAlign: "center", | ||||
|         displayIndent: "0em", | ||||
| 
 | ||||
|         "HTML-CSS": { scale: 100, | ||||
|                         linebreaks: { automatic: "false" }, | ||||
|                         webFont: "TeX" | ||||
|                        }, | ||||
|         SVG: {scale: 100, | ||||
|               linebreaks: { automatic: "false" }, | ||||
|               font: "TeX"}, | ||||
|         NativeMML: {scale: 100}, | ||||
|         TeX: { equationNumbers: {autoNumber: "AMS"}, | ||||
|                MultLineWidth: "85%", | ||||
|                TagSide: "right", | ||||
|                TagIndent: ".8em" | ||||
|              } | ||||
| }); | ||||
| </script> | ||||
| <script type="text/javascript" | ||||
|         src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script> | ||||
| </head> | ||||
| <body> | ||||
| <div id="org-div-home-and-up"> | ||||
|  <a accesskey="h" href="../index.html"> UP </a> | ||||
|  | | ||||
|  <a accesskey="H" href="../index.html"> HOME </a> | ||||
| </div><div id="content"> | ||||
| <h1 class="title">Transfer function from velocity of one stage to the velocity of another stage using geophones</h1> | ||||
| <div id="table-of-contents"> | ||||
| <h2>Table of Contents</h2> | ||||
| <div id="text-table-of-contents"> | ||||
| <ul> | ||||
| <li><a href="#orgbdb27eb">1. Experimental Setup</a> | ||||
| <ul> | ||||
| <li><a href="#org8dbd49b">1.1. From Marble to Ty - <code>mat/meas_010.mat</code></a></li> | ||||
| <li><a href="#orgf538b5e">1.2. From Marble to Ry - <code>mat/meas_011.mat</code></a></li> | ||||
| <li><a href="#orga48e2bc">1.3. From Ty to Ry - <code>mat/meas_012.mat</code></a></li> | ||||
| </ul> | ||||
| </li> | ||||
| <li><a href="#org3ea309e">2. Measurement Analysis</a> | ||||
| <ul> | ||||
| <li><a href="#org1638277">2.1. Load data</a></li> | ||||
| <li><a href="#org0d3cc48">2.2. Analysis - Time Domain</a></li> | ||||
| <li><a href="#org65a5a79">2.3. Analysis - Frequency Domain</a></li> | ||||
| <li><a href="#orgbbc525b">2.4. Conclusion</a></li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-orgbdb27eb" class="outline-2"> | ||||
| <h2 id="orgbdb27eb"><span class="section-number-2">1</span> Experimental Setup</h2> | ||||
| <div class="outline-text-2" id="text-1"> | ||||
| <p> | ||||
| For all the measurements in this section: | ||||
| </p> | ||||
| <ul class="org-ul"> | ||||
| <li>all the control stages are OFF.</li> | ||||
| <li>the measurements are on the \(z\) direction</li> | ||||
| </ul> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-org8dbd49b" class="outline-3"> | ||||
| <h3 id="org8dbd49b"><span class="section-number-3">1.1</span> From Marble to Ty - <code>mat/meas_010.mat</code></h3> | ||||
| <div class="outline-text-3" id="text-1-1"> | ||||
| <p> | ||||
| One geophone is on the marble, one is on the Ty stage (see figures <a href="#orgee9d1f3">1</a>, <a href="#org0acaa0d">2</a> and <a href="#orgec4ad6b">3</a>). | ||||
| </p> | ||||
| 
 | ||||
| <p> | ||||
| The <code>data</code> array contains the following columns: | ||||
| </p> | ||||
| <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||||
| 
 | ||||
| 
 | ||||
| <colgroup> | ||||
| <col  class="org-right" /> | ||||
| 
 | ||||
| <col  class="org-left" /> | ||||
| </colgroup> | ||||
| <thead> | ||||
| <tr> | ||||
| <th scope="col" class="org-right">Column</th> | ||||
| <th scope="col" class="org-left">Description</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td class="org-right">1</td> | ||||
| <td class="org-left">Ground</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">2</td> | ||||
| <td class="org-left">Ty</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">3</td> | ||||
| <td class="org-left">Time</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orgee9d1f3" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_155330.jpg" alt="IMG_20190430_155330.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 1: </span>Setup with one geophone on the marble and one on top of the translation stage</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org0acaa0d" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_155335.jpg" alt="IMG_20190430_155335.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 2: </span>Setup with one geophone on the marble and one on top of the translation stage - Close up view</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orgec4ad6b" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_155342.jpg" alt="IMG_20190430_155342.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 3: </span>Setup with one geophone on the marble and one on top of the translation stage - Top view</p> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-orgf538b5e" class="outline-3"> | ||||
| <h3 id="orgf538b5e"><span class="section-number-3">1.2</span> From Marble to Ry - <code>mat/meas_011.mat</code></h3> | ||||
| <div class="outline-text-3" id="text-1-2"> | ||||
| <p> | ||||
| One geophone is on the marble, one is on the Ry stage (see figure <a href="#orgd643390">4</a>) | ||||
| </p> | ||||
| 
 | ||||
| <p> | ||||
| The <code>data</code> array contains the following columns: | ||||
| </p> | ||||
| <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||||
| 
 | ||||
| 
 | ||||
| <colgroup> | ||||
| <col  class="org-right" /> | ||||
| 
 | ||||
| <col  class="org-left" /> | ||||
| </colgroup> | ||||
| <thead> | ||||
| <tr> | ||||
| <th scope="col" class="org-right">Column</th> | ||||
| <th scope="col" class="org-left">Description</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td class="org-right">1</td> | ||||
| <td class="org-left">Ground</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">2</td> | ||||
| <td class="org-left">Ry</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">3</td> | ||||
| <td class="org-left">Time</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orgd643390" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_163919.jpg" alt="IMG_20190430_163919.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 4: </span>Setup with one geophone on the marble and one on top of the Tilt Stage</p> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-orga48e2bc" class="outline-3"> | ||||
| <h3 id="orga48e2bc"><span class="section-number-3">1.3</span> From Ty to Ry - <code>mat/meas_012.mat</code></h3> | ||||
| <div class="outline-text-3" id="text-1-3"> | ||||
| <p> | ||||
| One geophone is on the Ty stage, one is on the Ry stage (see figures <a href="#org4038125">5</a>, <a href="#orge841934">6</a> and <a href="#org7715257">7</a>) | ||||
| One geophone on the Ty stage, one geophone on the Ry stage. | ||||
| </p> | ||||
| 
 | ||||
| <p> | ||||
| The <code>data</code> array contains the following columns: | ||||
| </p> | ||||
| <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||||
| 
 | ||||
| 
 | ||||
| <colgroup> | ||||
| <col  class="org-right" /> | ||||
| 
 | ||||
| <col  class="org-left" /> | ||||
| </colgroup> | ||||
| <thead> | ||||
| <tr> | ||||
| <th scope="col" class="org-right">Column</th> | ||||
| <th scope="col" class="org-left">Description</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td class="org-right">1</td> | ||||
| <td class="org-left">Ty</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">2</td> | ||||
| <td class="org-left">Ry</td> | ||||
| </tr> | ||||
| 
 | ||||
| <tr> | ||||
| <td class="org-right">3</td> | ||||
| <td class="org-left">Time</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org4038125" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_170405.jpg" alt="IMG_20190430_170405.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 5: </span>Setup with one geophone on the translation stage and one on top of the Tilt Stage</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orge841934" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_170418.jpg" alt="IMG_20190430_170418.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 6: </span>Setup with one geophone on the translation stage and one on top of the Tilt Stage - Top view</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org7715257" class="figure"> | ||||
| <p><img src="./img/IMG_20190430_170425.jpg" alt="IMG_20190430_170425.jpg" width="500px" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 7: </span>Setup with one geophone on the translation stage and one on top of the Tilt Stage - Close up view</p> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-org3ea309e" class="outline-2"> | ||||
| <h2 id="org3ea309e"><span class="section-number-2">2</span> Measurement Analysis</h2> | ||||
| <div class="outline-text-2" id="text-2"> | ||||
| <p> | ||||
| <a id="org88007a9"></a> | ||||
| </p> | ||||
| <div class="note"> | ||||
| <p> | ||||
| All the files (data and Matlab scripts) are accessible <a href="data/tf_stages_geophone.zip">here</a>. | ||||
| </p> | ||||
| 
 | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-org1638277" class="outline-3"> | ||||
| <h3 id="org1638277"><span class="section-number-3">2.1</span> Load data</h3> | ||||
| <div class="outline-text-3" id="text-2-1"> | ||||
| <p> | ||||
| We load the data of the z axis of two geophones. | ||||
| </p> | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab">m_ty  = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_010.mat', 'data'</span><span class="org-rainbow-delimiters-depth-1">)</span>; m_ty  = m_ty.data; | ||||
| m_ry  = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_011.mat', 'data'</span><span class="org-rainbow-delimiters-depth-1">)</span>; m_ry  = m_ry.data; | ||||
| ty_ry = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_012.mat', 'data'</span><span class="org-rainbow-delimiters-depth-1">)</span>; ty_ry = ty_ry.data; | ||||
| </pre> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-org0d3cc48" class="outline-3"> | ||||
| <h3 id="org0d3cc48"><span class="section-number-3">2.2</span> Analysis - Time Domain</h3> | ||||
| <div class="outline-text-3" id="text-2-2"> | ||||
| <p> | ||||
| First, we can look at the time domain data. | ||||
| </p> | ||||
| 
 | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-type">figure</span>; | ||||
| hold on; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Marble'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Ty'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold off; | ||||
| xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Voltage </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">V</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'northeast'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org6d8a0eb" class="figure"> | ||||
| <p><img src="figs/time_domain_m_ty.png" alt="time_domain_m_ty.png" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 8: </span>Time domain - Marble and translation stage</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-type">figure</span>; | ||||
| hold on; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Marble'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Ty'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold off; | ||||
| xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Voltage </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">V</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'northeast'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org8700a74" class="figure"> | ||||
| <p><img src="figs/time_domain_m_ry.png" alt="time_domain_m_ry.png" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 9: </span>Time domain - Marble and tilt stage</p> | ||||
| </div> | ||||
| 
 | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-type">figure</span>; | ||||
| hold on; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Ty'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Ry'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold off; | ||||
| xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Voltage </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">V</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'northeast'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orgcb2e12d" class="figure"> | ||||
| <p><img src="figs/time_domain_ty_ry.png" alt="time_domain_ty_ry.png" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 10: </span>Time domain - Translation stage and tilt stage</p> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-org65a5a79" class="outline-3"> | ||||
| <h3 id="org65a5a79"><span class="section-number-3">2.3</span> Analysis - Frequency Domain</h3> | ||||
| <div class="outline-text-3" id="text-2-3"> | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab">dt = m_ty<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> m_ty<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| 
 | ||||
| Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt; | ||||
| win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>Fs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| <p> | ||||
| First, we compute the transfer function estimate between the two geophones for the 3 experiments (figure <a href="#orgc25589d">11</a>). We also plot their coherence (figure <a href="#org6b84c12">12</a>). | ||||
| </p> | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>T_m_ty,  f<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>,  m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>,  win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| <span class="org-rainbow-delimiters-depth-1">[</span>T_m_ry,  <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>,  m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>,  win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| <span class="org-rainbow-delimiters-depth-1">[</span>T_ty_ry, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-type">figure</span>; | ||||
| ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold on; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, abs<span class="org-rainbow-delimiters-depth-2">(</span>T_m_ty<span class="org-rainbow-delimiters-depth-2">)</span>,  <span class="org-string">'DisplayName', 'Marble - Ty'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, abs<span class="org-rainbow-delimiters-depth-2">(</span>T_m_ry<span class="org-rainbow-delimiters-depth-2">)</span>,  <span class="org-string">'DisplayName', 'Marble - Ry'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, abs<span class="org-rainbow-delimiters-depth-2">(</span>T_ty_ry<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', 'Ty - Ry'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold off; | ||||
| <span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| <span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Magnitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'northwest'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| 
 | ||||
| ax2 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold on; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>T_m_ty<span class="org-rainbow-delimiters-depth-3">)</span>,  <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>T_m_ry<span class="org-rainbow-delimiters-depth-3">)</span>,  <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| plot<span class="org-rainbow-delimiters-depth-1">(</span>f, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>T_ty_ry<span class="org-rainbow-delimiters-depth-3">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| hold off; | ||||
| <span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| yticks<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-type">-</span><span class="org-highlight-numbers-number">90</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">90</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Phase'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| 
 | ||||
| linkaxes<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-2">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">10</span>, <span class="org-highlight-numbers-number">500</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="orgc25589d" class="figure"> | ||||
| <p><img src="figs/compare_tf_geophones.png" alt="compare_tf_geophones.png" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 11: </span>Transfer function from the first geophone to the second geophone for the three experiments</p> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div class="org-src-container"> | ||||
| <pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>coh_m_ty,  f<span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>,  m_ty<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>,  win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| <span class="org-rainbow-delimiters-depth-1">[</span>coh_m_ry,  <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>,  m_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>,  win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| <span class="org-rainbow-delimiters-depth-1">[</span>coh_ty_ry, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, ty_ry<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>; | ||||
| </pre> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="org6b84c12" class="figure"> | ||||
| <p><img src="figs/coherence_two_geophones.png" alt="coherence_two_geophones.png" /> | ||||
| </p> | ||||
| <p><span class="figure-number">Figure 12: </span>Coherence between the two geophones for the three experiments</p> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| 
 | ||||
| <div id="outline-container-orgbbc525b" class="outline-3"> | ||||
| <h3 id="orgbbc525b"><span class="section-number-3">2.4</span> Conclusion</h3> | ||||
| <div class="outline-text-3" id="text-2-4"> | ||||
| <div class="important"> | ||||
| <p> | ||||
| These measurements are not relevant. | ||||
| </p> | ||||
| 
 | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| <div id="postamble" class="status"> | ||||
| <p class="author">Author: Dehaeze Thomas</p> | ||||
| <p class="date">Created: 2019-05-15 mer. 17:22</p> | ||||
| <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										301
									
								
								other-measurements/tf_geophone_stages.org
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,301 @@ | ||||
| #+TITLE: Transfer function from velocity of one stage to the velocity of another stage using geophones | ||||
| :DRAWER: | ||||
| #+STARTUP: overview | ||||
|  | ||||
| #+LANGUAGE: en | ||||
| #+EMAIL: dehaeze.thomas@gmail.com | ||||
| #+AUTHOR: Dehaeze Thomas | ||||
|  | ||||
| #+HTML_LINK_HOME: ../index.html | ||||
| #+HTML_LINK_UP: ../index.html | ||||
|  | ||||
| #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/> | ||||
| #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/> | ||||
| #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/> | ||||
| #+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script> | ||||
| #+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script> | ||||
| #+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script> | ||||
| #+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script> | ||||
|  | ||||
| #+HTML_MATHJAX: align: center tagside: right font: TeX | ||||
|  | ||||
| #+PROPERTY: header-args:matlab  :session *MATLAB* | ||||
| #+PROPERTY: header-args:matlab+ :comments org | ||||
| #+PROPERTY: header-args:matlab+ :results none | ||||
| #+PROPERTY: header-args:matlab+ :exports both | ||||
| #+PROPERTY: header-args:matlab+ :eval no-export | ||||
| #+PROPERTY: header-args:matlab+ :output-dir figs | ||||
|  | ||||
| #+PROPERTY: header-args:shell  :eval no-export | ||||
| :END: | ||||
|  | ||||
| * Experimental Setup | ||||
| For all the measurements in this section: | ||||
| - all the control stages are OFF. | ||||
| - the measurements are on the $z$ direction | ||||
|  | ||||
| ** From Marble to Ty - =mat/meas_010.mat= | ||||
| One geophone is on the marble, one is on the Ty stage (see figures [[fig:setup_m_ty]], [[fig:setup_m_ty_zoom]] and [[fig:setup_m_ty_top]]). | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ground      | | ||||
| |      2 | Ty          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_m_ty | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155330.jpg]] | ||||
|  | ||||
| #+name: fig:setup_m_ty_zoom | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage - Close up view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155335.jpg]] | ||||
|  | ||||
| #+name: fig:setup_m_ty_top | ||||
| #+caption: Setup with one geophone on the marble and one on top of the translation stage - Top view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_155342.jpg]] | ||||
|  | ||||
| ** From Marble to Ry - =mat/meas_011.mat= | ||||
| One geophone is on the marble, one is on the Ry stage (see figure [[fig:setup_m_ry]]) | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ground      | | ||||
| |      2 | Ry          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_m_ry | ||||
| #+caption: Setup with one geophone on the marble and one on top of the Tilt Stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_163919.jpg]] | ||||
|  | ||||
| ** From Ty to Ry - =mat/meas_012.mat= | ||||
| One geophone is on the Ty stage, one is on the Ry stage (see figures [[fig:setup_ty_ry]], [[fig:setup_ty_ry_top]] and [[fig:setup_ty_ry_zoom]]) | ||||
| One geophone on the Ty stage, one geophone on the Ry stage. | ||||
|  | ||||
| The =data= array contains the following columns: | ||||
| | Column | Description | | ||||
| |--------+-------------| | ||||
| |      1 | Ty          | | ||||
| |      2 | Ry          | | ||||
| |      3 | Time        | | ||||
|  | ||||
| #+name: fig:setup_ty_ry | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170405.jpg]] | ||||
|  | ||||
| #+name: fig:setup_ty_ry_top | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage - Top view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170418.jpg]] | ||||
|  | ||||
| #+name: fig:setup_ty_ry_zoom | ||||
| #+caption: Setup with one geophone on the translation stage and one on top of the Tilt Stage - Close up view | ||||
| #+attr_html: :width 500px | ||||
| [[file:./img/IMG_20190430_170425.jpg]] | ||||
|  | ||||
| * Measurement Analysis | ||||
|   :PROPERTIES: | ||||
|   :header-args:matlab+: :tangle matlab/tf_stages_geophone.m | ||||
|   :header-args:matlab+: :comments org :mkdirp yes | ||||
|   :END: | ||||
|   <<sec:tf_stages_geophone>> | ||||
|  | ||||
| ** ZIP file containing the data and matlab files                     :ignore: | ||||
| #+begin_src bash :exports none :results none | ||||
|   if [ matlab/tf_stages_geophone.m -nt data/tf_stages_geophone.zip ]; then | ||||
|     cp matlab/tf_stages_geophone.m tf_stages_geophone.m; | ||||
|     zip data/tf_stages_geophone \ | ||||
|         mat/data_010.mat \ | ||||
|         mat/data_011.mat \ | ||||
|         mat/data_012.mat \ | ||||
|         tf_stages_geophone.m | ||||
|     rm tf_stages_geophone.m; | ||||
|   fi | ||||
| #+end_src | ||||
|  | ||||
| #+begin_note | ||||
|   All the files (data and Matlab scripts) are accessible [[file:data/tf_stages_geophone.zip][here]]. | ||||
| #+end_note | ||||
|  | ||||
| ** Matlab Init                                              :noexport:ignore: | ||||
| #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) | ||||
|   <<matlab-dir>> | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :exports none :results silent :noweb yes | ||||
|   <<matlab-init>> | ||||
| #+end_src | ||||
|  | ||||
| ** Load data | ||||
| We load the data of the z axis of two geophones. | ||||
| #+begin_src matlab :results none | ||||
|   m_ty  = load('mat/data_010.mat', 'data'); m_ty  = m_ty.data; | ||||
|   m_ry  = load('mat/data_011.mat', 'data'); m_ry  = m_ry.data; | ||||
|   ty_ry = load('mat/data_012.mat', 'data'); ty_ry = ty_ry.data; | ||||
| #+end_src | ||||
|  | ||||
| ** Analysis - Time Domain | ||||
| First, we can look at the time domain data. | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(m_ty(:, 3), m_ty(:, 1), 'DisplayName', 'Marble'); | ||||
|   plot(m_ty(:, 3), m_ty(:, 2), 'DisplayName', 'Ty'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ty | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_m_ty.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ty | ||||
| #+CAPTION: Time domain - Marble and translation stage | ||||
| #+RESULTS: fig:time_domain_m_ty | ||||
| [[file:figs/time_domain_m_ty.png]] | ||||
|  | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(m_ry(:, 3), m_ry(:, 1), 'DisplayName', 'Marble'); | ||||
|   plot(m_ry(:, 3), m_ry(:, 2), 'DisplayName', 'Ty'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ry | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_m_ry.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_m_ry | ||||
| #+CAPTION: Time domain - Marble and tilt stage | ||||
| #+RESULTS: fig:time_domain_m_ry | ||||
| [[file:figs/time_domain_m_ry.png]] | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(ty_ry(:, 3), ty_ry(:, 1), 'DisplayName', 'Ty'); | ||||
|   plot(ty_ry(:, 3), ty_ry(:, 2), 'DisplayName', 'Ry'); | ||||
|   hold off; | ||||
|   xlabel('Time [s]'); ylabel('Voltage [V]'); | ||||
|   legend('Location', 'northeast'); | ||||
|   xlim([0, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_ty_ry | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/time_domain_ty_ry.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:time_domain_ty_ry | ||||
| #+CAPTION: Time domain - Translation stage and tilt stage | ||||
| #+RESULTS: fig:time_domain_ty_ry | ||||
| [[file:figs/time_domain_ty_ry.png]] | ||||
|  | ||||
| ** Analysis - Frequency Domain | ||||
| #+begin_src matlab :results none | ||||
|   dt = m_ty(2, 3) - m_ty(1, 3); | ||||
|  | ||||
|   Fs = 1/dt; | ||||
|   win = hanning(ceil(1*Fs)); | ||||
| #+end_src | ||||
|  | ||||
| First, we compute the transfer function estimate between the two geophones for the 3 experiments (figure [[fig:compare_tf_geophones]]). We also plot their coherence (figure [[fig:coherence_two_geophones]]). | ||||
| #+begin_src matlab :results none | ||||
|   [T_m_ty,  f] = tfestimate(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
|   [T_m_ry,  ~] = tfestimate(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
|   [T_ty_ry, ~] = tfestimate(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   figure; | ||||
|   ax1 = subplot(2, 1, 1); | ||||
|   hold on; | ||||
|   plot(f, abs(T_m_ty),  'DisplayName', 'Marble - Ty'); | ||||
|   plot(f, abs(T_m_ry),  'DisplayName', 'Marble - Ry'); | ||||
|   plot(f, abs(T_ty_ry), 'DisplayName', 'Ty - Ry'); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); | ||||
|   set(gca, 'XTickLabel',[]); | ||||
|   ylabel('Magnitude'); | ||||
|   legend('Location', 'northwest'); | ||||
|  | ||||
|   ax2 = subplot(2, 1, 2); | ||||
|   hold on; | ||||
|   plot(f, mod(180+180/pi*phase(T_m_ty),  360)-180); | ||||
|   plot(f, mod(180+180/pi*phase(T_m_ry),  360)-180); | ||||
|   plot(f, mod(180+180/pi*phase(T_ty_ry), 360)-180); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   ylim([-180, 180]); | ||||
|   yticks([-180, -90, 0, 90, 180]); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Phase'); | ||||
|  | ||||
|   linkaxes([ax1,ax2],'x'); | ||||
|   xlim([10, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:compare_tf_geophones | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/compare_tf_geophones.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:compare_tf_geophones | ||||
| #+CAPTION: Transfer function from the first geophone to the second geophone for the three experiments | ||||
| #+RESULTS: fig:compare_tf_geophones | ||||
| [[file:figs/compare_tf_geophones.png]] | ||||
|  | ||||
|  | ||||
| #+begin_src matlab :results none | ||||
|   [coh_m_ty,  f] = mscohere(m_ty(:, 1),  m_ty(:, 2),  win, [], [], Fs); | ||||
|   [coh_m_ry,  ~] = mscohere(m_ry(:, 1),  m_ry(:, 2),  win, [], [], Fs); | ||||
|   [coh_ty_ry, ~] = mscohere(ty_ry(:, 1), ty_ry(:, 2), win, [], [], Fs); | ||||
| #+end_src | ||||
|  | ||||
| #+begin_src matlab :results none :exports none | ||||
|   figure; | ||||
|   hold on; | ||||
|   plot(f, coh_m_ty,  'DisplayName', 'Marble - Ty'); | ||||
|   plot(f, coh_m_ry,  'DisplayName', 'Marble - Ry'); | ||||
|   plot(f, coh_ty_ry, 'DisplayName', 'Ty - Ry'); | ||||
|   hold off; | ||||
|   set(gca, 'xscale', 'log'); | ||||
|   xlabel('Frequency [Hz]'); ylabel('Coherence'); | ||||
|   ylim([0, 1]); xlim([1, 500]); | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:coherence_two_geophones | ||||
| #+HEADER: :tangle no :exports results :results value raw replace :noweb yes | ||||
| #+begin_src matlab :var filepath="figs/coherence_two_geophones.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png") | ||||
|   <<plt-matlab>> | ||||
| #+end_src | ||||
|  | ||||
| #+NAME: fig:coherence_two_geophones | ||||
| #+CAPTION: Coherence between the two geophones for the three experiments | ||||
| #+RESULTS: fig:coherence_two_geophones | ||||
| [[file:figs/coherence_two_geophones.png]] | ||||
|  | ||||
| ** Conclusion | ||||
| #+begin_important | ||||
|   These measurements are not relevant. | ||||
| #+end_important | ||||
| @@ -76,7 +76,7 @@ This Matlab function is accessible [[file:voltageToDisplacementL22.m][here]]. | ||||
| #+begin_src matlab | ||||
|   velocity = voltageToVelocityL22(voltage, time, gain); | ||||
|  | ||||
|   disp = lsim(1/s, velocity, time); | ||||
|   disp = lsim(1/(1+s/(2*pi*0.5)), velocity, time); | ||||
| #+end_src | ||||
| * getGroundVelocity | ||||
|   :PROPERTIES: | ||||
|   | ||||
| @@ -15,4 +15,4 @@ s = zpk('s'); | ||||
|  | ||||
| velocity = voltageToVelocityL22(voltage, time, gain); | ||||
|  | ||||
| disp = lsim(1/s, velocity, time); | ||||
| disp = lsim(1/(1+s/(2*pi*0.5)), velocity, time); | ||||
|   | ||||