+++ title = "Sensor Noise Estimation" author = ["Dehaeze Thomas"] draft = false +++ Tags : ## Estimation of the Noise of Inertial Sensors {#estimation-of-the-noise-of-inertial-sensors} Measuring the noise level of inertial sensors is not easy as the seismic motion is usually much larger than the sensor's noise level. A technique to estimate the sensor noise in such case is proposed in (<a href="#citeproc_bib_item_1">Barzilai, VanZandt, and Kenny 1998</a>) and well explained in (<a href="#citeproc_bib_item_2">Van der Poel 2010</a>) (Section 6.1.3). The idea is to mount two inertial sensors closely together such that they should measure the same quantity. This is represented in [Figure 1](#figure--fig:huddle-test-setup) where two identical sensors are measuring the same motion \\(x(t)\\). <a id="figure--fig:huddle-test-setup"></a> {{< figure src="/ox-hugo/huddle_test_setup.png" caption="<span class=\"figure-number\">Figure 1: </span>Schematic representation of the setup for measuring the noise of inertial sensors." >}} <div class="definition"> Few quantities that will be used to estimate the sensor noise are now defined. This include the **Coherence**, the **Power Spectral Density** (PSD) and the **Cross Spectral Density** (CSD). The coherence between signals \\(x\\) and \\(y\\) is defined as follow \\[ \gamma^2\_{xy}(\omega) = \frac{|C\_{xy}(\omega)|^2}{|P\_{x}(\omega)| |P\_{y}(\omega)|} \\] where \\(|P\_{x}(\omega)|\\) is the output PSD of signal \\(x(t)\\) and \\(|C\_{xy}(\omega)|\\) is the CSD of signals \\(x(t)\\) and \\(y(t)\\). The PSD and CSD are defined as follow: \begin{align} |P\_x(\omega)| &= \frac{2}{n\_d T} \sum^{n\_d}\_{n=1} \left| x\_k(\omega, T) \right|^2 \\\\ |C\_{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 The Matlab function `mscohere` can be used to compute the coherence: ```matlab %% Parameters Fs = 1e4; % Sampling Frequency [Hz] win = hanning(ceil(10*Fs)); % 10 seconds Hanning Windows %% Coherence between x and y [pxy, f] = mscohere(x, y, win, [], [], Fs); % Coherence, frequency vector in [Hz] ``` Alternatively, it can be manually computed using the `cpsd` and `pwelch` commands: ```matlab %% Manual Computation of the Coherence [pxy, f] = cpsd(x, y, win, [], [], Fs); % Cross Spectral Density between x and y [pxx, ~] = pwelch(x, win, [], [], Fs); % Power Spectral Density of x [pyy, ~] = pwelch(y, win, [], [], Fs); % Power Spectral Density of y pxy_manual = abs(pxy).^2./abs(pxx)./abs(pyy); ``` </div> Now suppose that: - both sensors are modelled as LTI systems \\(H\_1(s)\\) and \\(H\_2(s)\\) - sensor noises are modelled as input noises \\(n\_1(t)\\) and \\(n\_2(s)\\) - sensor noises are uncorrelated and each are uncorrelated with \\(x(t)\\) Then, the system can be represented by the block diagram in [Figure 2](#figure--fig:huddle-test-block-diagram), and we can write: \begin{align} P\_{y\_1y\_1}(\omega) &= |H\_1(\omega)|^2 ( P\_{x}(\omega) + P\_{n\_1}(\omega) ) \\\\ P\_{y\_2y\_2}(\omega) &= |H\_2(\omega)|^2 ( P\_{x}(\omega) + P\_{n\_2}(\omega) ) \\\\ C\_{y\_1y\_2}(j\omega) &= H\_2^H(j\omega) H\_1(j\omega) P\_{x}(\omega) \end{align} And the CSD between \\(y\_1(t)\\) and \\(y\_2(t)\\) is: \begin{equation} \gamma^2\_{y\_1y\_2}(\omega) = \frac{|C\_{y\_1y\_2}(j\omega)|^2}{P\_{y\_1}(\omega) P\_{y\_2}(\omega)} \end{equation} <a id="figure--fig:huddle-test-block-diagram"></a> {{< figure src="/ox-hugo/huddle_test_block_diagram.png" caption="<span class=\"figure-number\">Figure 2: </span>Huddle test block diagram" >}} Rearranging the equations, we obtain the PSD of \\(n\_1(t)\\) and \\(n\_2(t)\\): \begin{align} P\_{n1}(\omega) = \frac{P\_{y\_1}(\omega)}{|H\_1(j\omega)|^2} \left( 1 - \gamma\_{y\_1y\_2}(\omega) \frac{|H\_1(j\omega)|}{|H\_2(j\omega)|} \sqrt{\frac{P\_{y\_2}(\omega)}{P\_{y\_1}(\omega)}} \right) \\\\ P\_{n2}(\omega) = \frac{P\_{y\_2}(\omega)}{|H\_2(j\omega)|^2} \left( 1 - \gamma\_{y\_1y\_2}(\omega) \frac{|H\_2(j\omega)|}{|H\_1(j\omega)|} \sqrt{\frac{P\_{y\_1}(\omega)}{P\_{y\_2}(\omega)}} \right) \end{align} If we assume the two sensor dynamics to be the same \\(H\_1(s) \approx H\_2(s)\\) and the PSD of \\(n\_1(t)\\) and \\(n\_2(t)\\) to be the same (\\(P\_{n\_1}(\omega) \approx P\_{n\_2}(\omega)\\)) which is most of the time the case when using two identical sensors, we obtain this approximate equation: <div class="important"> \begin{equation} |P\_{n\_1}(\omega)| \approx \frac{P\_{y\_1}}{|H\_1(j\omega)|^2} \big( 1 - \gamma\_{y\_1y\_2}(\omega) \big) \end{equation} </div> ## Bibliography {#bibliography} <style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body"> <div class="csl-entry"><a id="citeproc_bib_item_1"></a>Barzilai, Aaron, Tom VanZandt, and Tom Kenny. 1998. “Technique for Measurement of the Noise of a Sensor in the Presence of Large Background Signals.” <i>Review of Scientific Instruments</i> 69 (7): 2767–72. doi:<a href="https://doi.org/10.1063/1.1149013">10.1063/1.1149013</a>.</div> <div class="csl-entry"><a id="citeproc_bib_item_2"></a>Poel, Gerrit Wijnand van der. 2010. “An Exploration of Active Hard Mount Vibration Isolation for Precision Equipment.” University of Twente. doi:<a href="https://doi.org/10.3990/1.9789036530163">10.3990/1.9789036530163</a>.</div> </div>