diff --git a/huddle-test-geophones/figs/psd_velocity.png b/huddle-test-geophones/figs/psd_velocity.png index b27c091..4e862f6 100644 Binary files a/huddle-test-geophones/figs/psd_velocity.png and b/huddle-test-geophones/figs/psd_velocity.png differ diff --git a/huddle-test-geophones/figs/tf_geophones.png b/huddle-test-geophones/figs/tf_geophones.png new file mode 100644 index 0000000..eddee9d Binary files /dev/null and b/huddle-test-geophones/figs/tf_geophones.png differ diff --git a/huddle-test-geophones/index.html b/huddle-test-geophones/index.html index 444ad26..814c589 100644 --- a/huddle-test-geophones/index.html +++ b/huddle-test-geophones/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + SpeedGoat @@ -254,21 +254,22 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 Setup

+
+

1 Setup

Two L22 geophones are used. @@ -282,14 +283,14 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH

-
+

setup.jpg

Figure 1: Setup

-
+

geophones.jpg

Figure 2: Geophones

@@ -297,38 +298,38 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH
-
-

2 Signal Processing

+
+

2 Signal Processing

-
-

2.1 Load data

+
+

2.1 Load data

-
load('mat/data_001.mat', 't', 'x1', 'x2');
-dt = t(2) - t(1);
+
load('mat/data_001.mat', 't', 'x1', 'x2');
+dt = t(2) - t(1);
 
-
-

2.2 Time Domain Data

+
+

2.2 Time Domain Data

-
figure;
+
figure;
 hold on;
-plot(t, x1);
-plot(t, x2);
+plot(t, x1);
+plot(t, x2);
 hold off;
-xlabel('Time [s]');
-ylabel('Voltage [V]');
-xlim([t(1), t(end)]);
+xlabel('Time [s]');
+ylabel('Voltage [V]');
+xlim([t(1), t(end)]);
 
-
+

data_time_domain.png

Figure 3: Time domain Data

@@ -336,19 +337,19 @@ xlim([
-
figure;
+
figure;
 hold on;
-plot(t, x1);
-plot(t, x2);
+plot(t, x1);
+plot(t, x2);
 hold off;
-xlabel('Time [s]');
-ylabel('Voltage [V]');
-xlim([0 1]);
+xlabel('Time [s]');
+ylabel('Voltage [V]');
+xlim([0 1]);
 
-
+

data_time_domain_zoom.png

Figure 4: Time domain Data - Zoom

@@ -356,39 +357,39 @@ xlim([
-
-

2.3 Compute PSD

+
+

2.3 Compute PSD

-
[pxx1, f1] = pwelch(x1, hanning(ceil(length(t)/100)), 0, [], 1/dt);
-[pxx2, f2] = pwelch(x2, hanning(ceil(length(t)/100)), 0, [], 1/dt);
+
[pxx1, f1] = pwelch(x1, hanning(ceil(1/dt)), 0, [], 1/dt);
+[pxx2, f2] = pwelch(x2, hanning(ceil(1/dt)), 0, [], 1/dt);
 
-
-

2.4 Take into account sensibility of Geophone

+
+

2.4 Take into account sensibility of Geophone

The Geophone used are L22.

-
S0 = 88; % Sensitivity [V/(m/s)]
-f0 = 2; % Cut-off frequnecy [Hz]
-S = (s/2/pi/f0)/(1+s/2/pi/f0);
+
S0 = 88; % Sensitivity [V/(m/s)]
+f0 = 2; % Cut-off frequnecy [Hz]
+S = (s/2/pi/f0)/(1+s/2/pi/f0);
 
-
figure;
-bodeFig({S});
-ylabel('Amplitude [V/(m/s)]')
+
figure;
+bodeFig({S});
+ylabel('Amplitude [V/(m/s)]')
 
-
+

geophone_sensibility.png

Figure 5: Sensibility of the Geophone

@@ -406,37 +407,74 @@ The cut-off frequency is set at 1kHz.
-
G0 = 60; % [dB]
+
G0 = 60; % [dB]
 
-G = G0/(1+s/2/pi/1000);
+G = G0/(1+s/2/pi/1000);
 
-
figure;
+
figure;
 hold on;
-plot(f1, sqrt(pxx1)./squeeze(abs(freqresp(G, f1, 'Hz')))./squeeze(abs(freqresp(S, f1, 'Hz'))));
-plot(f2, sqrt(pxx2)./squeeze(abs(freqresp(G, f2, 'Hz')))./squeeze(abs(freqresp(S, f2, 'Hz'))));
+plot(f1, sqrt(pxx1)./squeeze(abs(freqresp(G, f1, 'Hz')))./squeeze(abs(freqresp(S, f1, 'Hz'))));
+plot(f2, sqrt(pxx2)./squeeze(abs(freqresp(G, f2, 'Hz')))./squeeze(abs(freqresp(S, f2, 'Hz'))));
 hold off;
-set(gca, 'xscale', 'log');
-set(gca, 'yscale', 'log');
-xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
+set(gca, 'xscale', 'log');
+set(gca, 'yscale', 'log');
+xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]')
+xlim([2, 500]);
 
-
+

psd_velocity.png

Figure 6: Spectral density of the velocity

+
+

2.5 Transfer function between the two geophones

+
+
+
[T12, f12] = tfestimate(x1, x2, hanning(1/dt), 0, [], 1/dt);
+
+
+ +
+
figure;
+ax1 = subplot(2, 1, 1);
+plot(f12, abs(T12));
+set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
+set(gca, 'XTickLabel',[]);
+ylabel('Magnitude');
+
+ax2 = subplot(2, 1, 2);
+plot(f12, mod(180+180/pi*phase(T12), 360)-180);
+set(gca, 'xscale', 'log');
+ylim([-180, 180]);
+yticks([-180, -90, 0, 90, 180]);
+xlabel('Frequency [Hz]'); ylabel('Phase');
+
+linkaxes([ax1,ax2],'x');
+xlim([2, 500]);
+
+
+ + +
+

tf_geophones.png +

+

Figure 7: Estimated transfer function between the two geophones

+
+
+

Author: Thomas Dehaeze

-

Created: 2019-04-17 mer. 18:25

+

Created: 2019-04-18 jeu. 09:20

Validate

diff --git a/huddle-test-geophones/index.org b/huddle-test-geophones/index.org index 90dbf4d..78e2066 100644 --- a/huddle-test-geophones/index.org +++ b/huddle-test-geophones/index.org @@ -96,8 +96,8 @@ The voltage amplifiers include a low pass filter with a cut-off frequency at 1kH ** Compute PSD #+begin_src matlab :results none - [pxx1, f1] = pwelch(x1, hanning(ceil(length(t)/100)), 0, [], 1/dt); - [pxx2, f2] = pwelch(x2, hanning(ceil(length(t)/100)), 0, [], 1/dt); + [pxx1, f1] = pwelch(x1, hanning(ceil(1/dt)), 0, [], 1/dt); + [pxx2, f2] = pwelch(x2, hanning(ceil(1/dt)), 0, [], 1/dt); #+end_src ** Take into account sensibility of Geophone @@ -147,6 +147,7 @@ The cut-off frequency is set at 1kHz. set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); xlabel('Frequency [Hz]'); ylabel('PSD [m/s/sqrt(Hz)]') + xlim([2, 500]); #+end_src #+NAME: fig:psd_velocity @@ -159,3 +160,37 @@ The cut-off frequency is set at 1kHz. #+CAPTION: Spectral density of the velocity #+RESULTS: fig:psd_velocity [[file:figs/psd_velocity.png]] +** Transfer function between the two geophones +#+begin_src matlab :results none + [T12, f12] = tfestimate(x1, x2, hanning(1/dt), 0, [], 1/dt); +#+end_src + +#+begin_src matlab :results none + figure; + ax1 = subplot(2, 1, 1); + plot(f12, abs(T12)); + set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); + set(gca, 'XTickLabel',[]); + ylabel('Magnitude'); + + ax2 = subplot(2, 1, 2); + plot(f12, mod(180+180/pi*phase(T12), 360)-180); + set(gca, 'xscale', 'log'); + ylim([-180, 180]); + yticks([-180, -90, 0, 90, 180]); + xlabel('Frequency [Hz]'); ylabel('Phase'); + + linkaxes([ax1,ax2],'x'); + xlim([2, 500]); +#+end_src + +#+NAME: fig:tf_geophones +#+HEADER: :tangle no :exports results :results value raw replace :noweb yes +#+begin_src matlab :var filepath="figs/tf_geophones.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") + <> +#+end_src + +#+NAME: fig:tf_geophones +#+CAPTION: Estimated transfer function between the two geophones +#+RESULTS: fig:tf_geophones +[[file:figs/tf_geophones.png]]