Add bibliography file. Add huddle-test analysis.

This commit is contained in:
Thomas Dehaeze 2019-04-18 17:02:47 +02:00
parent 0b50d331e5
commit 97755ac9f0
13 changed files with 657 additions and 135 deletions

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
# Emacs
auto/
# Simulink Real Time
*bio.m
*pt.m

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -3,7 +3,7 @@
"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-04-18 jeu. 09:47 -->
<!-- 2019-04-18 jeu. 17:02 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SpeedGoat</title>
@ -246,6 +246,28 @@ for the JavaScript code in this tag.
}
/*]]>*///-->
</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="content">
@ -254,22 +276,36 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org0d60e7b">1. Setup</a></li>
<li><a href="#org7eef25c">2. Signal Processing</a>
<li><a href="#org15c3fe1">1. Setup</a></li>
<li><a href="#org10e7b57">2. Signal Processing</a>
<ul>
<li><a href="#orgca77dc3">2.1. Load data</a></li>
<li><a href="#org679612f">2.2. Time Domain Data</a></li>
<li><a href="#org03c3a8f">2.3. Compute PSD</a></li>
<li><a href="#org63e55c2">2.4. Take into account sensibility of Geophone</a></li>
<li><a href="#orgbf05153">2.5. Transfer function between the two geophones</a></li>
<li><a href="#orgce9374f">2.1. Load data</a></li>
<li><a href="#orgf5bde3c">2.2. Time Domain Data</a></li>
<li><a href="#org53fa3f2">2.3. Computation of the ASD of the measured voltage</a></li>
<li><a href="#orgdb1374d">2.4. Scaling to take into account the sensibility of the geophone and the voltage amplifier</a></li>
<li><a href="#org07e8527">2.5. Computation of the ASD of the velocity</a></li>
<li><a href="#orgf3d4fe6">2.6. Transfer function between the two geophones</a></li>
<li><a href="#org1336e7b">2.7. Estimation of the sensor noise</a></li>
</ul>
</li>
<li><a href="#orgaee4ca7">3. Compare axis</a>
<ul>
<li><a href="#org4a91ee9">3.1. Load data</a></li>
<li><a href="#org36adfc5">3.2. Compare PSD</a></li>
<li><a href="#org698e322">3.3. Compare TF</a></li>
</ul>
</li>
<li><a href="#orge3ff149">4. Appendix</a>
<ul>
<li><a href="#org2060421">4.1. Computation of coherence from PSD and CSD</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org0d60e7b" class="outline-2">
<h2 id="org0d60e7b"><span class="section-number-2">1</span> Setup</h2>
<div id="outline-container-org15c3fe1" class="outline-2">
<h2 id="org15c3fe1"><span class="section-number-2">1</span> Setup</h2>
<div class="outline-text-2" id="text-1">
<p>
Two L22 geophones are used.
@ -283,14 +319,14 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
</p>
<div id="org6a1fa99" class="figure">
<div id="org2286cc3" class="figure">
<p><img src="./figs/setup.jpg" alt="setup.jpg" width="500px" />
</p>
<p><span class="figure-number">Figure 1: </span>Setup</p>
</div>
<div id="org30e0467" class="figure">
<div id="org9446018" class="figure">
<p><img src="./figs/geophones.jpg" alt="geophones.jpg" width="500px" />
</p>
<p><span class="figure-number">Figure 2: </span>Geophones</p>
@ -298,13 +334,16 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
</div>
</div>
<div id="outline-container-org7eef25c" class="outline-2">
<h2 id="org7eef25c"><span class="section-number-2">2</span> Signal Processing</h2>
<div id="outline-container-org10e7b57" class="outline-2">
<h2 id="org10e7b57"><span class="section-number-2">2</span> Signal Processing</h2>
<div class="outline-text-2" id="text-2">
</div>
<div id="outline-container-orgca77dc3" class="outline-3">
<h3 id="orgca77dc3"><span class="section-number-3">2.1</span> Load data</h3>
<div id="outline-container-orgce9374f" class="outline-3">
<h3 id="orgce9374f"><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">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -313,8 +352,8 @@ dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-high
</div>
</div>
<div id="outline-container-org679612f" class="outline-3">
<h3 id="org679612f"><span class="section-number-3">2.2</span> Time Domain Data</h3>
<div id="outline-container-orgf5bde3c" class="outline-3">
<h3 id="orgf5bde3c"><span class="section-number-3">2.2</span> Time Domain Data</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
@ -329,7 +368,7 @@ xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbo
</div>
<div id="org53abd46" class="figure">
<div id="org2d30e99" class="figure">
<p><img src="figs/data_time_domain.png" alt="data_time_domain.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Time domain Data</p>
@ -349,7 +388,7 @@ xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbo
</div>
<div id="org2c53eef" class="figure">
<div id="org8e28356" class="figure">
<p><img src="figs/data_time_domain_zoom.png" alt="data_time_domain_zoom.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Time domain Data - Zoom</p>
@ -357,23 +396,34 @@ xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbo
</div>
</div>
<div id="outline-container-org03c3a8f" class="outline-3">
<h3 id="org03c3a8f"><span class="section-number-3">2.3</span> Compute PSD</h3>
<div id="outline-container-org53fa3f2" class="outline-3">
<h3 id="org53fa3f2"><span class="section-number-3">2.3</span> Computation of the ASD of the measured voltage</h3>
<div class="outline-text-3" id="text-2-3">
<p>
We first define the parameters for the frequency domain analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pxx1, f1<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pxx2, f2<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-1">)</span>;
<pre class="src src-matlab">win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span>length<span class="org-rainbow-delimiters-depth-3">(</span>x1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pxx1, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x1, 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>pxx2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x2, 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>
</div>
<div id="outline-container-org63e55c2" class="outline-3">
<h3 id="org63e55c2"><span class="section-number-3">2.4</span> Take into account sensibility of Geophone</h3>
<div id="outline-container-orgdb1374d" class="outline-3">
<h3 id="orgdb1374d"><span class="section-number-3">2.4</span> Scaling to take into account the sensibility of the geophone and the voltage amplifier</h3>
<div class="outline-text-3" id="text-2-4">
<p>
The Geophone used are L22.
Their sensibility are shown on figure <a href="#org59aaa6d">5</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">S0 = <span class="org-highlight-numbers-number">88</span>; <span class="org-comment">% Sensitivity [V/(m/s)]</span>
f0 = <span class="org-highlight-numbers-number">2</span>; <span class="org-comment">% Cut-off frequnecy [Hz]</span>
@ -381,15 +431,8 @@ S = <span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type"
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
bodeFig<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">{</span>S<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">'Amplitude </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-3">(</span></span><span class="org-string">m/s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></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>
</pre>
</div>
<div id="orgf3fae86" class="figure">
<div id="org59aaa6d" class="figure">
<p><img src="figs/geophone_sensibility.png" alt="geophone_sensibility.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Sensibility of the Geophone</p>
@ -397,15 +440,10 @@ ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-stri
<p>
We take into account the gain of the electronics.
The cut-off frequency is set at 1kHz.
We also take into account the gain of the electronics which is here set to be \(60dB\).
The amplifiers also include a low pass filter with a cut-off frequency set at 1kHz.
</p>
<ul class="org-ul">
<li class="off"><code>[&#xa0;]</code> Check what is the order of the filter</li>
<li class="off"><code>[&#xa0;]</code> Maybe I should not use this filter as there is no high frequencies anyway?</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">G0 = <span class="org-highlight-numbers-number">60</span>; <span class="org-comment">% [dB]</span>
@ -413,11 +451,30 @@ G = G0<span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1
</pre>
</div>
<p>
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}\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">scaling = <span class="org-highlight-numbers-number">1</span><span class="org-type">./</span>squeeze<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>freqresp<span class="org-rainbow-delimiters-depth-3">(</span>G, f, <span class="org-string">'Hz'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">./squeeze</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">abs</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">(</span></span><span class="org-string">freqresp</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">S, f, 'Hz'</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org07e8527" class="outline-3">
<h3 id="org07e8527"><span class="section-number-3">2.5</span> Computation of the ASD of the velocity</h3>
<div class="outline-text-3" id="text-2-5">
<p>
The ASD of the measured velocity is shown on figure <a href="#orgd1800a0">6</a>.
</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>f1, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>freqresp<span class="org-rainbow-delimiters-depth-4">(</span>G, f1, <span class="org-string">'Hz'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">)</span></span><span class="org-string">./squeeze</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">(</span></span><span class="org-string">abs</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">freqresp</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">(</span></span><span class="org-string">S, f1, 'Hz'</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f2, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>freqresp<span class="org-rainbow-delimiters-depth-4">(</span>G, f2, <span class="org-string">'Hz'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">)</span></span><span class="org-string">./squeeze</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">(</span></span><span class="org-string">abs</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">freqresp</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">(</span></span><span class="org-string">S, f2, 'Hz'</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>scaling<span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>scaling<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>;
<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">'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
@ -427,54 +484,308 @@ xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbo
</div>
<div id="orga831714" class="figure">
<div id="orgd1800a0" class="figure">
<p><img src="figs/psd_velocity.png" alt="psd_velocity.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Spectral density of the velocity</p>
</div>
</div>
</div>
<div id="outline-container-orgbf05153" class="outline-3">
<h3 id="orgbf05153"><span class="section-number-3">2.5</span> Transfer function between the two geophones</h3>
<div class="outline-text-3" id="text-2-5">
<div id="outline-container-orgf3d4fe6" class="outline-3">
<h3 id="orgf3d4fe6"><span class="section-number-3">2.6</span> Transfer function between the two geophones</h3>
<div class="outline-text-3" id="text-2-6">
<p>
We here compute the transfer function from one geophone to the other.
The result is shown on figure <a href="#org6abd5e1">7</a>.
</p>
<p>
We also compute the coherence between the two signals (figure <a href="#org80d61f1">8</a>).
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>T12, f12<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt<span class="org-rainbow-delimiters-depth-1">)</span>;
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>T12, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, 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="org6abd5e1" class="figure">
<p><img src="figs/tf_geophones.png" alt="tf_geophones.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Estimated transfer function between the two geophones</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>coh12, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, 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="org80d61f1" class="figure">
<p><img src="figs/coh_geophones.png" alt="coh_geophones.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Cohererence between the signals of the two geophones</p>
</div>
</div>
</div>
<div id="outline-container-org1336e7b" class="outline-3">
<h3 id="org1336e7b"><span class="section-number-3">2.7</span> Estimation of the sensor noise</h3>
<div class="outline-text-3" id="text-2-7">
<p>
The technique to estimate the sensor noise is taken from <a class='org-ref-reference' href="#barzilai98_techn_measur_noise_sensor_presen">barzilai98_techn_measur_noise_sensor_presen</a>.
</p>
<p>
The coherence between signals \(X\) and \(Y\) is defined as follow
\[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
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\).
</p>
<p>
The PSD and CSD are defined as follow:
</p>
\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}
<p>
where:
</p>
<ul class="org-ul">
<li>\(n_d\) is the number for records averaged</li>
<li>\(T\) is the length of each record</li>
<li>\(X_k(\omega, T)\) is the finite Fourier transform of the kth record</li>
<li>\(X_k^*(\omega, T)\) is its complex conjugate</li>
</ul>
<p>
The <code>mscohere</code> function is compared with this formula on Appendix (section <a href="#org72623b2">4.1</a>), it is shown that it is identical.
</p>
<p>
Figure <a href="#org88b4597">9</a> illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
</p>
<p>
Two geophones are mounted side by side to ensure that they are exposed by the same motion input \(U\).
</p>
<p>
Each sensor has noise \(N\) and \(M\).
</p>
<div id="org88b4597" class="figure">
<p><img src="figs/huddle-test.png" alt="huddle-test.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Huddle test block diagram</p>
</div>
<p>
We here assume that each sensor has the same magnitude of instrumental noise (\(N = M\)).
We also assume that \(H_1 = H_2 = 1\).
</p>
<p>
We then obtain:
</p>
\begin{equation}
\label{org5b4a541}
\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}
<p>
Since the input signal \(U\) and the instrumental noise \(N\) are incoherent:
</p>
\begin{equation}
\label{orga04bdf3}
|G_X(\omega)| = |G_N(\omega)| + |G_U(\omega)|
\end{equation}
<p>
From equations \eqref{org5b4a541} and \eqref{orga04bdf3}, we finally obtain
</p>
<div class="important">
\begin{equation}
\label{orga57b1ae}
|G_N(\omega)| = |G_X(\omega)| \left( 1 - \sqrt{\gamma_{XY}^2(\omega)} \right)
\end{equation}
</div>
<p>
The instrumental noise is computed below. The result in V<sup>2</sup>/Hz is shown on figure <a href="#orgd3329eb">10</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">pxxN = pxx1<span class="org-type">.*</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">-</span> coh12<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>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f12, abs<span class="org-rainbow-delimiters-depth-2">(</span>T12<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxx1, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxx2, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, pxxN, <span class="org-string">'k--'</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>;
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>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f12, 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>T12<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>;
<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>;
xlabel<span class="org-rainbow-delimiters-depth-1">(</span>'Frequency <span class="org-rainbow-delimiters-depth-2">[</span>Hz<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>'PSD <span class="org-rainbow-delimiters-depth-2">[</span>$V<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span>Hz$<span class="org-rainbow-delimiters-depth-2">]</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">1</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="org4ff60a3" class="figure">
<p><img src="figs/tf_geophones.png" alt="tf_geophones.png" />
<div id="orgd3329eb" class="figure">
<p><img src="figs/intrumental_noise_V.png" alt="intrumental_noise_V.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Estimated transfer function between the two geophones</p>
<p><span class="figure-number">Figure 10: </span>Instrumental Noise and Measurement in \(V^2/Hz\)</p>
</div>
<p>
This is then further converted into velocity and compared with the ground velocity measurement. (figure <a href="#org6fa2e55">11</a>)
</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>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx1<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxx2<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>pxxN<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.*</span>scaling, <span class="org-string">'k--'</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>;
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">'</span>PSD <span class="org-rainbow-delimiters-depth-2">[</span>$m<span class="org-type">/</span>s<span class="org-type">/\</span>sqrt<span class="org-rainbow-delimiters-depth-3">{</span>Hz<span class="org-rainbow-delimiters-depth-3">}</span>$<span class="org-rainbow-delimiters-depth-2">]</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">1</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="org6fa2e55" class="figure">
<p><img src="figs/intrumental_noise_velocity.png" alt="intrumental_noise_velocity.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Instrumental Noise and Measurement in \(m/s/\sqrt{Hz}\)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgaee4ca7" class="outline-2">
<h2 id="orgaee4ca7"><span class="section-number-2">3</span> Compare axis</h2>
<div class="outline-text-2" id="text-3">
</div>
<div id="outline-container-org4a91ee9" class="outline-3">
<h3 id="org4a91ee9"><span class="section-number-3">3.1</span> Load data</h3>
<div class="outline-text-3" id="text-3-1">
<div class="org-src-container">
<pre class="src src-matlab">z = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
east = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_002.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
north = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_003.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org36adfc5" class="outline-3">
<h3 id="org36adfc5"><span class="section-number-3">3.2</span> Compare PSD</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pz1, fz<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>z.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pz2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>z.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pe1, fe<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>east.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pe2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>east.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pn1, fn<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>north.x1, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>pn2, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>north.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x2<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div id="orgc2c3d69" class="figure">
<p><img src="figs/compare_axis_psd.png" alt="compare_axis_psd.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Compare the measure PSD of the two geophones for the three axis</p>
</div>
</div>
</div>
<div id="outline-container-org698e322" class="outline-3">
<h3 id="org698e322"><span class="section-number-3">3.3</span> Compare TF</h3>
<div class="outline-text-3" id="text-3-3">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>Tz, fz<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>z.x1, z.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>z.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>z.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>Te, fe<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>east.x1, east.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>east.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>east.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>Tn, fn<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>north.x1, north.x2, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span>length<span class="org-rainbow-delimiters-depth-4">(</span>north.x1<span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-2">(</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span>north.t<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div id="orgf7b4d80" class="figure">
<p><img src="figs/compare_tf_axis.png" alt="compare_tf_axis.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Compare the transfer function from one geophone to the other for the 3 axis</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orge3ff149" class="outline-2">
<h2 id="orge3ff149"><span class="section-number-2">4</span> Appendix</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org2060421" class="outline-3">
<h3 id="org2060421"><span class="section-number-3">4.1</span> Computation of coherence from PSD and CSD</h3>
<div class="outline-text-3" id="text-4-1">
<p>
<a id="org72623b2"></a>
</p>
<div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_001.mat', 't', 'x1', 'x2'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</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>length<span class="org-rainbow-delimiters-depth-3">(</span>x1<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">pxy = cpsd<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, 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>;
pxx = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x1, 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>;
pyy = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x2, 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>;
coh = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>x1, x2, 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>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, abs<span class="org-rainbow-delimiters-depth-2">(</span>pxy<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">./</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>pxx<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>pyy<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, coh, <span class="org-string">'--'</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>;
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-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">'Coherence'</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">1</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="org3184d2c" class="figure">
<p><img src="figs/comp_coherence_formula.png" alt="comp_coherence_formula.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Comparison of <code>mscohere</code> and manual computation</p>
</div>
</div>
</div>
</div>
<p>
<h1 class='org-ref-bib-h1'>Bibliography</h1>
<ul class='org-ref-bib'><li><a id="barzilai98_techn_measur_noise_sensor_presen">[barzilai98_techn_measur_noise_sensor_presen]</a> <a name="barzilai98_techn_measur_noise_sensor_presen"></a>Aaron Barzilai, Tom VanZandt & Tom Kenny, Technique for Measurement of the Noise of a Sensor in the Presence of Large Background Signals, <i>Review of Scientific Instruments</i>, <b>69(7)</b>, 2767-2772 (1998). <a href="https://doi.org/10.1063/1.1149013">link</a>. <a href="http://dx.doi.org/10.1063/1.1149013">doi</a>.</li>
</ul>
</p>
</div>
<div id="postamble" class="status">
<p class="author">Author: Thomas Dehaeze</p>
<p class="date">Created: 2019-04-18 jeu. 09:47</p>
<p class="date">Created: 2019-04-18 jeu. 17:02</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>

View File

@ -43,6 +43,7 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
#+end_src
** Load data
We load the data of the z axis of two geophones.
#+begin_src matlab :results none
load('mat/data_001.mat', 't', 'x1', 'x2');
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
[[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.
#+begin_src matlab :results none
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);
#+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.
Their sensibility are shown on figure [[fig:geophone_sensibility]].
#+begin_src matlab :results none
S0 = 88; % Sensitivity [V/(m/s)]
f0 = 2; % Cut-off frequnecy [Hz]
S = (s/2/pi/f0)/(1+s/2/pi/f0);
#+end_src
#+begin_src matlab :results none
#+begin_src matlab :results none :exports none
figure;
bodeFig({S});
ylabel('Amplitude [V/(m/s)]')
@ -132,11 +135,8 @@ The Geophone used are L22.
[[file:figs/geophone_sensibility.png]]
We take into account the gain of the electronics.
The cut-off frequency is 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?
We also take into account the gain of the electronics which is here set to be $60dB$.
The amplifiers also include a low pass filter with a cut-off frequency set at 1kHz.
#+begin_src matlab :results none
G0 = 60; % [dB]
@ -144,11 +144,21 @@ The cut-off frequency is set at 1kHz.
G = G0/(1+s/2/pi/1000);
#+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
figure;
hold on;
plot(f, sqrt(pxx1)./squeeze(abs(freqresp(G, f, 'Hz')))./squeeze(abs(freqresp(S, f1, 'Hz'))));
plot(f, sqrt(pxx2)./squeeze(abs(freqresp(G, f, 'Hz')))./squeeze(abs(freqresp(S, f2, 'Hz'))));
plot(f, sqrt(pxx1)./scaling);
plot(f, sqrt(pxx2)./scaling);
hold off;
set(gca, 'xscale', 'log');
set(gca, 'yscale', 'log');
@ -168,11 +178,16 @@ The cut-off frequency is set at 1kHz.
[[file:figs/psd_velocity.png]]
** 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
[T12, ~] = tfestimate(x1, x2, win, [], [], Fs);
#+end_src
#+begin_src matlab :results none
#+begin_src matlab :results none :exports none
figure;
ax1 = subplot(2, 1, 1);
plot(f, abs(T12));
@ -206,7 +221,7 @@ The cut-off frequency is set at 1kHz.
[coh12, ~] = mscohere(x1, x2, win, [], [], Fs);
#+end_src
#+begin_src matlab :results none
#+begin_src matlab :results none :exports none
figure;
plot(f, coh12);
set(gca, 'xscale', 'log');
@ -225,63 +240,62 @@ The cut-off frequency is set at 1kHz.
#+RESULTS: fig:coh_geophones
[[file:figs/coh_geophones.png]]
** Huddle Test
#+NAME: fig:huddle_test
#+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) {};
** Estimation of the sensor noise
The technique to estimate the sensor noise is taken from cite:barzilai98_techn_measur_noise_sensor_presen.
\draw[] (U) node[above right]{$U$} -- ++(1, 0) node[]{$\bullet$};
\draw[->] ($(U)+(1, 0)$) |- (S1.west);
\draw[->] ($(U)+(1, 0)$) |- (S2.west);
The coherence between signals $X$ and $Y$ is defined as follow
\[ \gamma^2_{XY}(\omega) = \frac{|G_{XY}(\omega)|^2}{|G_{X}(\omega)| |G_{Y}(\omega)|} \]
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);
\draw[->] (S2.east) -- (add2.west);
The PSD and CSD are defined as follow:
\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$};
\draw[->] (add2.east) -- ++(1, 0) node[above]{$X_2$};
The =mscohere= function is compared with this formula on Appendix (section [[sec:coherence]]), it is shown that it is identical.
\draw[<-] (add1.north) -- ++(0, 0.8)node[right]{$N_1$};
\draw[<-] (add2.north) -- ++(0, 0.8)node[right]{$N_2$};
\end{tikzpicture}
#+end_src
Figure [[fig:huddle_test]] illustrate a block diagram model of the system used to determine the sensor noise of the geophone.
Two geophones are mounted side by side to ensure that they are exposed by the same motion input $U$.
Each sensor has noise $N$ and $M$.
#+NAME: fig:huddle_test
#+CAPTION: Huddle test block diagram
#+RESULTS: fig:huddle_test
[[file:figs/huddle-test.png]]
We are measuring $X_1$ and $X_2$.
The goal is to determine $N$.
We here assume that each sensor has the same magnitude of instrumental noise ($N = M$).
We also assume that $H_1 = H_2 = 1$.
\begin{align*}
X_1(\omega) &= S_1(\omega) U(\omega) + N_1(\omega)\\
X_2(\omega) &= S_2(\omega) U(\omega) + N_2(\omega)
\end{align*}
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) \]
We then obtain:
#+NAME: eq:coh_bis
\begin{equation}
\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}
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
S = abs(T12.*pxx1);
N = pxx2 - (T12.^2).*pxx1;
N = abs(N)/2;
pxxN = pxx1.*(1 - coh12);
#+end_src
#+begin_src matlab :results none
@ -289,20 +303,184 @@ and
hold on;
plot(f, pxx1, '-');
plot(f, pxx2, '-');
plot(f, N, 'k:', 'linewidth', 1);
plot(f, pxxN, 'k--');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('PSD [$V^2/Hz$]');
xlim([1, 500]);
legend('$\Phi_{ss} (f)$','$\Phi_{nn} (f)$')
#+end_src
#+NAME: fig:huddle_test_results
#+NAME: fig:intrumental_noise_V
#+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>>
#+end_src
#+NAME: fig:huddle_test_results
#+CAPTION: Results of the Huddle test
#+RESULTS: fig:huddle_test_results
[[file:figs/huddle_test_results.png]]
#+NAME: fig:intrumental_noise_V
#+CAPTION: Instrumental Noise and Measurement in $V^2/Hz$
#+RESULTS: fig:intrumental_noise_V
[[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

View File

@ -1,8 +1,9 @@
* DONE Register data on the computer
CLOSED: [2019-04-17 mer. 17:26]
* TODO [#B] Find the documentation of the amplifier to know the order of the filters
* TODO [#A] Shake a little bit the geophones to see if we have better measurements on X and Y axis
* Measurements
* Measurements:
| data_001.mat | Z axis |
| data_002.mat | East |
| data_003.mat | North |
| Filename | Description |
|--------------+-------------|
| data_001.mat | Z axis |
| data_002.mat | East |
| data_003.mat | North |

View 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},
}