Add bibliography file. Add huddle-test analysis.
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
|||||||
|
# Emacs
|
||||||
|
auto/
|
||||||
|
|
||||||
# Simulink Real Time
|
# Simulink Real Time
|
||||||
*bio.m
|
*bio.m
|
||||||
*pt.m
|
*pt.m
|
||||||
|
BIN
huddle-test-geophones/figs/comp_coherence_formula.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
huddle-test-geophones/figs/compare_axis_psd.png
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
huddle-test-geophones/figs/compare_tf_axis.png
Normal file
After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 142 KiB |
BIN
huddle-test-geophones/figs/intrumental_noise_V.png
Normal file
After Width: | Height: | Size: 130 KiB |
BIN
huddle-test-geophones/figs/intrumental_noise_velocity.png
Normal file
After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 117 KiB |
@ -43,6 +43,7 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Load data
|
** Load data
|
||||||
|
We load the data of the z axis of two geophones.
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
load('mat/data_001.mat', 't', 'x1', 'x2');
|
load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||||
dt = t(2) - t(1);
|
dt = t(2) - t(1);
|
||||||
@ -94,7 +95,7 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
|
|||||||
#+RESULTS: fig:data_time_domain_zoom
|
#+RESULTS: fig:data_time_domain_zoom
|
||||||
[[file:figs/data_time_domain_zoom.png]]
|
[[file:figs/data_time_domain_zoom.png]]
|
||||||
|
|
||||||
** Compute PSD
|
** Computation of the ASD of the measured voltage
|
||||||
We first define the parameters for the frequency domain analysis.
|
We first define the parameters for the frequency domain analysis.
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
win = hanning(ceil(length(x1)/100));
|
win = hanning(ceil(length(x1)/100));
|
||||||
@ -106,15 +107,17 @@ We first define the parameters for the frequency domain analysis.
|
|||||||
[pxx2, ~] = pwelch(x2, win, [], [], Fs);
|
[pxx2, ~] = pwelch(x2, win, [], [], Fs);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Take into account sensibility of Geophone
|
** Scaling to take into account the sensibility of the geophone and the voltage amplifier
|
||||||
The Geophone used are L22.
|
The Geophone used are L22.
|
||||||
|
Their sensibility are shown on figure [[fig:geophone_sensibility]].
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
S0 = 88; % Sensitivity [V/(m/s)]
|
S0 = 88; % Sensitivity [V/(m/s)]
|
||||||
f0 = 2; % Cut-off frequnecy [Hz]
|
f0 = 2; % Cut-off frequnecy [Hz]
|
||||||
S = (s/2/pi/f0)/(1+s/2/pi/f0);
|
S = (s/2/pi/f0)/(1+s/2/pi/f0);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none :exports none
|
||||||
figure;
|
figure;
|
||||||
bodeFig({S});
|
bodeFig({S});
|
||||||
ylabel('Amplitude [V/(m/s)]')
|
ylabel('Amplitude [V/(m/s)]')
|
||||||
@ -132,11 +135,8 @@ The Geophone used are L22.
|
|||||||
[[file:figs/geophone_sensibility.png]]
|
[[file:figs/geophone_sensibility.png]]
|
||||||
|
|
||||||
|
|
||||||
We take into account the gain of the electronics.
|
We also take into account the gain of the electronics which is here set to be $60dB$.
|
||||||
The cut-off frequency is set at 1kHz.
|
The amplifiers also include a low pass filter with a cut-off frequency set at 1kHz.
|
||||||
|
|
||||||
- [ ] Check what is the order of the filter
|
|
||||||
- [ ] Maybe I should not use this filter as there is no high frequencies anyway?
|
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
G0 = 60; % [dB]
|
G0 = 60; % [dB]
|
||||||
@ -144,11 +144,21 @@ The cut-off frequency is set at 1kHz.
|
|||||||
G = G0/(1+s/2/pi/1000);
|
G = G0/(1+s/2/pi/1000);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
We divide the ASD measured (in $\text{V}/\sqrt{\text{Hz}}$) by the transfer function of the voltage amplifier to obtain the ASD of the voltage across the geophone.
|
||||||
|
We further divide the result by the sensibility of the Geophone to obtain the ASD of the velocity in $m/s/\sqrt{Hz}$.
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
scaling = 1./squeeze(abs(freqresp(G, f, 'Hz')))./squeeze(abs(freqresp(S, f, 'Hz')));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Computation of the ASD of the velocity
|
||||||
|
The ASD of the measured velocity is shown on figure [[fig:psd_velocity]].
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
figure;
|
figure;
|
||||||
hold on;
|
hold on;
|
||||||
plot(f, sqrt(pxx1)./squeeze(abs(freqresp(G, f, 'Hz')))./squeeze(abs(freqresp(S, f1, 'Hz'))));
|
plot(f, sqrt(pxx1)./scaling);
|
||||||
plot(f, sqrt(pxx2)./squeeze(abs(freqresp(G, f, 'Hz')))./squeeze(abs(freqresp(S, f2, 'Hz'))));
|
plot(f, sqrt(pxx2)./scaling);
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'xscale', 'log');
|
set(gca, 'xscale', 'log');
|
||||||
set(gca, 'yscale', 'log');
|
set(gca, 'yscale', 'log');
|
||||||
@ -168,11 +178,16 @@ The cut-off frequency is set at 1kHz.
|
|||||||
[[file:figs/psd_velocity.png]]
|
[[file:figs/psd_velocity.png]]
|
||||||
|
|
||||||
** Transfer function between the two geophones
|
** Transfer function between the two geophones
|
||||||
|
We here compute the transfer function from one geophone to the other.
|
||||||
|
The result is shown on figure [[fig:tf_geophones]].
|
||||||
|
|
||||||
|
We also compute the coherence between the two signals (figure [[fig:coh_geophones]]).
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
[T12, ~] = tfestimate(x1, x2, win, [], [], Fs);
|
[T12, ~] = tfestimate(x1, x2, win, [], [], Fs);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none :exports none
|
||||||
figure;
|
figure;
|
||||||
ax1 = subplot(2, 1, 1);
|
ax1 = subplot(2, 1, 1);
|
||||||
plot(f, abs(T12));
|
plot(f, abs(T12));
|
||||||
@ -206,7 +221,7 @@ The cut-off frequency is set at 1kHz.
|
|||||||
[coh12, ~] = mscohere(x1, x2, win, [], [], Fs);
|
[coh12, ~] = mscohere(x1, x2, win, [], [], Fs);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none :exports none
|
||||||
figure;
|
figure;
|
||||||
plot(f, coh12);
|
plot(f, coh12);
|
||||||
set(gca, 'xscale', 'log');
|
set(gca, 'xscale', 'log');
|
||||||
@ -225,63 +240,62 @@ The cut-off frequency is set at 1kHz.
|
|||||||
#+RESULTS: fig:coh_geophones
|
#+RESULTS: fig:coh_geophones
|
||||||
[[file:figs/coh_geophones.png]]
|
[[file:figs/coh_geophones.png]]
|
||||||
|
|
||||||
** Huddle Test
|
** Estimation of the sensor noise
|
||||||
#+NAME: fig:huddle_test
|
The technique to estimate the sensor noise is taken from cite:barzilai98_techn_measur_noise_sensor_presen.
|
||||||
#+HEADER: :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/MEGA/These/LaTeX/}{config.tex}")
|
|
||||||
#+HEADER: :imagemagick t :fit yes :iminoptions -scale 100% -density 150 :imoutoptions -quality 100
|
|
||||||
#+HEADER: :results raw replace :buffer no :eval no-export :exports both :mkdirp yes
|
|
||||||
#+HEADER: :output-dir figs
|
|
||||||
#+begin_src latex :file huddle-test.pdf :post pdf2svg(file=*this*, ext="png") :exports results
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\coordinate[] (U) at (0, 0) {};
|
|
||||||
\node[block, above right=0.5 and 2 of U] (S1) {$S_1$};
|
|
||||||
\node[block, below right=0.5 and 2 of U] (S2) {$S_2$};
|
|
||||||
\node[addb={+}{}{}{}{}, right=0.5 of S1] (add1) {};
|
|
||||||
\node[addb={+}{}{}{}{}, right=0.5 of S2] (add2) {};
|
|
||||||
|
|
||||||
\draw[] (U) node[above right]{$U$} -- ++(1, 0) node[]{$\bullet$};
|
The coherence between signals $X$ and $Y$ is defined as follow
|
||||||
\draw[->] ($(U)+(1, 0)$) |- (S1.west);
|
\[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
|
||||||
\draw[->] ($(U)+(1, 0)$) |- (S2.west);
|
where $|G_X(\omega)|$ is the output Power Spectral Density (PSD) of signal $X$ and $|G_{XY}(\omega)|$ is the Cross Spectral Density (CSD) of signal $X$ and $Y$.
|
||||||
|
|
||||||
\draw[->] (S1.east) -- (add1.west);
|
The PSD and CSD are defined as follow:
|
||||||
\draw[->] (S2.east) -- (add2.west);
|
\begin{align}
|
||||||
|
|G_X(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} \left| X_k(\omega, T) \right|^2 \\
|
||||||
|
|G_{XY}(\omega)| &= \frac{2}{n_d T} \sum^{n_d}_{n=1} [ X_k^*(\omega, T) ] [ Y_k(\omega, T) ]
|
||||||
|
\end{align}
|
||||||
|
where:
|
||||||
|
- $n_d$ is the number for records averaged
|
||||||
|
- $T$ is the length of each record
|
||||||
|
- $X_k(\omega, T)$ is the finite Fourier transform of the kth record
|
||||||
|
- $X_k^*(\omega, T)$ is its complex conjugate
|
||||||
|
|
||||||
\draw[->] (add1.east) -- ++(1, 0) node[above]{$X_1$};
|
The =mscohere= function is compared with this formula on Appendix (section [[sec:coherence]]), it is shown that it is identical.
|
||||||
\draw[->] (add2.east) -- ++(1, 0) node[above]{$X_2$};
|
|
||||||
|
|
||||||
\draw[<-] (add1.north) -- ++(0, 0.8)node[right]{$N_1$};
|
Figure [[fig:huddle_test]] illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
|
||||||
\draw[<-] (add2.north) -- ++(0, 0.8)node[right]{$N_2$};
|
|
||||||
\end{tikzpicture}
|
Two geophones are mounted side by side to ensure that they are exposed by the same motion input $U$.
|
||||||
#+end_src
|
|
||||||
|
Each sensor has noise $N$ and $M$.
|
||||||
|
|
||||||
#+NAME: fig:huddle_test
|
#+NAME: fig:huddle_test
|
||||||
#+CAPTION: Huddle test block diagram
|
#+CAPTION: Huddle test block diagram
|
||||||
#+RESULTS: fig:huddle_test
|
|
||||||
[[file:figs/huddle-test.png]]
|
[[file:figs/huddle-test.png]]
|
||||||
|
|
||||||
We are measuring $X_1$ and $X_2$.
|
We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
|
||||||
The goal is to determine $N$.
|
We also assume that $H_1 = H_2 = 1$.
|
||||||
|
|
||||||
\begin{align*}
|
We then obtain:
|
||||||
X_1(\omega) &= S_1(\omega) U(\omega) + N_1(\omega)\\
|
#+NAME: eq:coh_bis
|
||||||
X_2(\omega) &= S_2(\omega) U(\omega) + N_2(\omega)
|
\begin{equation}
|
||||||
\end{align*}
|
\gamma_{XY}^2(\omega) = \frac{1}{1 + 2 \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right) + \left( \frac{|G_N(\omega)|}{|G_U(\omega)|} \right)^2}
|
||||||
|
\end{equation}
|
||||||
Then
|
|
||||||
\[ X_2(\omega) = \frac{S_2(\omega)}{S_1(\omega)} X_1(\omega) + N_2(\omega) - \frac{S_2(\omega)}{S_1(\omega)}N_1(\omega) \]
|
|
||||||
|
|
||||||
We suppose $N_1 = N_2 = N$
|
|
||||||
\[ N_2(\omega) - \frac{S_2(\omega)}{S_1(\omega)}N_1(\omega) = \left( 1 - \frac{S_2(\omega)}{S_1(\omega)}\right) N(\omega) \]
|
|
||||||
and
|
|
||||||
\[ N(\omega) = \frac{S_2(\omega)}{S_1(\omega)} X_2(\omega) - N_2(\omega) - \frac{S_2(\omega)}{S_1(\omega)}N_1(\omega) \]
|
|
||||||
|
|
||||||
|
Since the input signal $U$ and the instrumental noise $N$ are incoherent:
|
||||||
|
#+NAME: eq:incoherent_noise
|
||||||
|
\begin{equation}
|
||||||
|
|G_X(\omega)| = |G_N(\omega)| + |G_U(\omega)|
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
From equations [[eq:coh_bis]] and [[eq:incoherent_noise]], we finally obtain
|
||||||
|
#+begin_important
|
||||||
|
#+NAME: eq:noise_psd
|
||||||
|
\begin{equation}
|
||||||
|
|G_N(\omega)| = |G_X(\omega)| \left( 1 - \sqrt{\gamma_{XY}^2(\omega)} \right)
|
||||||
|
\end{equation}
|
||||||
|
#+end_important
|
||||||
|
|
||||||
|
The instrumental noise is computed below. The result in V^2/Hz is shown on figure [[fig:intrumental_noise_V]].
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
S = abs(T12.*pxx1);
|
pxxN = pxx1.*(1 - coh12);
|
||||||
|
|
||||||
N = pxx2 - (T12.^2).*pxx1;
|
|
||||||
N = abs(N)/2;
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none
|
#+begin_src matlab :results none
|
||||||
@ -289,20 +303,184 @@ and
|
|||||||
hold on;
|
hold on;
|
||||||
plot(f, pxx1, '-');
|
plot(f, pxx1, '-');
|
||||||
plot(f, pxx2, '-');
|
plot(f, pxx2, '-');
|
||||||
plot(f, N, 'k:', 'linewidth', 1);
|
plot(f, pxxN, 'k--');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [$V^2/Hz$]');
|
||||||
xlim([1, 500]);
|
xlim([1, 500]);
|
||||||
legend('$\Phi_{ss} (f)$','$\Phi_{nn} (f)$')
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: fig:huddle_test_results
|
#+NAME: fig:intrumental_noise_V
|
||||||
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||||
#+begin_src matlab :var filepath="figs/huddle_test_results.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
#+begin_src matlab :var filepath="figs/intrumental_noise_V.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
<<plt-matlab>>
|
<<plt-matlab>>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME: fig:huddle_test_results
|
#+NAME: fig:intrumental_noise_V
|
||||||
#+CAPTION: Results of the Huddle test
|
#+CAPTION: Instrumental Noise and Measurement in $V^2/Hz$
|
||||||
#+RESULTS: fig:huddle_test_results
|
#+RESULTS: fig:intrumental_noise_V
|
||||||
[[file:figs/huddle_test_results.png]]
|
[[file:figs/intrumental_noise_V.png]]
|
||||||
|
|
||||||
|
This is then further converted into velocity and compared with the ground velocity measurement. (figure [[fig:intrumental_noise_velocity]])
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, sqrt(pxx1).*scaling, '-');
|
||||||
|
plot(f, sqrt(pxx2).*scaling, '-');
|
||||||
|
plot(f, sqrt(pxxN).*scaling, 'k--');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [$m/s/\sqrt{Hz}$]');
|
||||||
|
xlim([1, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:intrumental_noise_velocity
|
||||||
|
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/intrumental_noise_velocity.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:intrumental_noise_velocity
|
||||||
|
#+CAPTION: Instrumental Noise and Measurement in $m/s/\sqrt{Hz}$
|
||||||
|
#+RESULTS: fig:intrumental_noise_velocity
|
||||||
|
[[file:figs/intrumental_noise_velocity.png]]
|
||||||
|
|
||||||
|
* Compare axis
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
|
#+begin_src matlab :exports none :results silent :noweb yes
|
||||||
|
<<matlab-init>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Load data
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
z = load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||||
|
east = load('mat/data_002.mat', 't', 'x1', 'x2');
|
||||||
|
north = load('mat/data_003.mat', 't', 'x1', 'x2');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Compare PSD
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
[pz1, fz] = pwelch(z.x1, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||||
|
[pz2, ~] = pwelch(z.x2, hanning(ceil(length(z.x2)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||||
|
|
||||||
|
[pe1, fe] = pwelch(east.x1, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||||
|
[pe2, ~] = pwelch(east.x2, hanning(ceil(length(east.x2)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||||
|
|
||||||
|
[pn1, fn] = pwelch(north.x1, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||||
|
[pn2, ~] = pwelch(north.x2, hanning(ceil(length(north.x2)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(fz, sqrt(pz1), '-', 'Color', [0 0.4470 0.7410], 'DisplayName', 'z');
|
||||||
|
plot(fz, sqrt(pz2), '--', 'Color', [0 0.4470 0.7410], 'HandleVisibility', 'off');
|
||||||
|
plot(fe, sqrt(pe1), '-', 'Color', [0.8500 0.3250 0.0980], 'DisplayName', 'east');
|
||||||
|
plot(fe, sqrt(pe2), '--', 'Color', [0.8500 0.3250 0.0980], 'HandleVisibility', 'off');
|
||||||
|
plot(fn, sqrt(pn1), '-', 'Color', [0.9290 0.6940 0.1250], 'DisplayName', 'north');
|
||||||
|
plot(fn, sqrt(pn2), '--', 'Color', [0.9290 0.6940 0.1250], 'HandleVisibility', 'off');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]');
|
||||||
|
legend('Location', 'northeast');
|
||||||
|
xlim([0, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:compare_axis_psd
|
||||||
|
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/compare_axis_psd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:compare_axis_psd
|
||||||
|
#+CAPTION: Compare the measure PSD of the two geophones for the three axis
|
||||||
|
#+RESULTS: fig:compare_axis_psd
|
||||||
|
[[file:figs/compare_axis_psd.png]]
|
||||||
|
|
||||||
|
** Compare TF
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
[Tz, fz] = tfestimate(z.x1, z.x2, hanning(ceil(length(z.x1)/100)), [], [], 1/(z.t(2)-z.t(1)));
|
||||||
|
[Te, fe] = tfestimate(east.x1, east.x2, hanning(ceil(length(east.x1)/100)), [], [], 1/(east.t(2)-east.t(1)));
|
||||||
|
[Tn, fn] = tfestimate(north.x1, north.x2, hanning(ceil(length(north.x1)/100)), [], [], 1/(north.t(2)-north.t(1)));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none :exports none
|
||||||
|
figure;
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
plot(fz, abs(Tz), 'DisplayName', 'z');
|
||||||
|
plot(fe, abs(Te), 'DisplayName', 'east');
|
||||||
|
plot(fn, abs(Tn), 'DisplayName', 'north');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
|
||||||
|
set(gca, 'XTickLabel',[]);
|
||||||
|
ylabel('Magnitude');
|
||||||
|
legend('Location', 'southwest');
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
plot(fz, mod(180+180/pi*phase(Tz), 360)-180);
|
||||||
|
plot(fe, mod(180+180/pi*phase(Te), 360)-180);
|
||||||
|
plot(fn, mod(180+180/pi*phase(Tn), 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([1, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:compare_tf_axis
|
||||||
|
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/compare_tf_axis.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:compare_tf_axis
|
||||||
|
#+CAPTION: Compare the transfer function from one geophone to the other for the 3 axis
|
||||||
|
#+RESULTS: fig:compare_tf_axis
|
||||||
|
[[file:figs/compare_tf_axis.png]]
|
||||||
|
* Appendix
|
||||||
|
** Computation of coherence from PSD and CSD
|
||||||
|
<<sec:coherence>>
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
load('mat/data_001.mat', 't', 'x1', 'x2');
|
||||||
|
dt = t(2) - t(1);
|
||||||
|
Fs = 1/dt;
|
||||||
|
win = hanning(ceil(length(x1)/100));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
pxy = cpsd(x1, x2, win, [], [], Fs);
|
||||||
|
pxx = pwelch(x1, win, [], [], Fs);
|
||||||
|
pyy = pwelch(x2, win, [], [], Fs);
|
||||||
|
coh = mscohere(x1, x2, win, [], [], Fs);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :results none
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
plot(f, abs(pxy).^2./abs(pxx)./abs(pyy), '-');
|
||||||
|
plot(f, coh, '--');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
xlabel('Frequency'); ylabel('Coherence');
|
||||||
|
xlim([1, 500]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:comp_coherence_formula
|
||||||
|
#+HEADER: :tangle no :exports results :results value raw replace :noweb yes
|
||||||
|
#+begin_src matlab :var filepath="figs/comp_coherence_formula.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
|
||||||
|
<<plt-matlab>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+NAME: fig:comp_coherence_formula
|
||||||
|
#+CAPTION: Comparison of =mscohere= and manual computation
|
||||||
|
#+RESULTS: fig:comp_coherence_formula
|
||||||
|
[[file:figs/comp_coherence_formula.png]]
|
||||||
|
|
||||||
|
* Bibliography :ignore:
|
||||||
|
bibliographystyle:unsrt
|
||||||
|
bibliography:ref.bib
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
* DONE Register data on the computer
|
* TODO [#B] Find the documentation of the amplifier to know the order of the filters
|
||||||
CLOSED: [2019-04-17 mer. 17:26]
|
* TODO [#A] Shake a little bit the geophones to see if we have better measurements on X and Y axis
|
||||||
|
* Measurements
|
||||||
* Measurements:
|
|
||||||
|
|
||||||
|
| Filename | Description |
|
||||||
|
|--------------+-------------|
|
||||||
| data_001.mat | Z axis |
|
| data_001.mat | Z axis |
|
||||||
| data_002.mat | East |
|
| data_002.mat | East |
|
||||||
| data_003.mat | North |
|
| data_003.mat | North |
|
29
huddle-test-geophones/ref.bib
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
@article{barzilai98_techn_measur_noise_sensor_presen,
|
||||||
|
author = {Aaron Barzilai and Tom VanZandt and Tom Kenny},
|
||||||
|
title = {Technique for Measurement of the Noise of a Sensor in the
|
||||||
|
Presence of Large Background Signals},
|
||||||
|
journal = {Review of Scientific Instruments},
|
||||||
|
volume = 69,
|
||||||
|
number = 7,
|
||||||
|
pages = {2767-2772},
|
||||||
|
year = 1998,
|
||||||
|
doi = {10.1063/1.1149013},
|
||||||
|
url = {https://doi.org/10.1063/1.1149013},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@article{kirchhoff17_huddl_test_measur_near_johns,
|
||||||
|
author = {R. Kirchhoff and C. M. Mow-Lowry and V. B. Adya and G.
|
||||||
|
Bergmann and S. Cooper and M. M. Hanke and P. Koch and S. M.
|
||||||
|
K{\"o}hlenbeck and J. Lehmann and P. Oppermann and J.
|
||||||
|
W{\"o}hler and D. S. Wu and H. L{\"u}ck and K. A. Strain},
|
||||||
|
title = {Huddle Test Measurement of a Near Johnson Noise Limited
|
||||||
|
Geophone},
|
||||||
|
journal = {Review of Scientific Instruments},
|
||||||
|
volume = 88,
|
||||||
|
number = 11,
|
||||||
|
pages = 115008,
|
||||||
|
year = 2017,
|
||||||
|
doi = {10.1063/1.5000592},
|
||||||
|
url = {https://doi.org/10.1063/1.5000592},
|
||||||
|
}
|