From 9d181e3e4ab8fea8a89ac8d8e4b37309bd9aca81 Mon Sep 17 00:00:00 2001 From: "J.A. de Jong - Redu-Sone B.V., ASCEE V.O.F" Date: Mon, 31 Oct 2022 09:20:50 +0100 Subject: [PATCH] Updated LASP docs --- ASCEE_lasp.lyx | 992 +++++++++++++++++++++++++++++++++++++++++-- img/overlap_save.pdf | Bin 40677 -> 45545 bytes 2 files changed, 968 insertions(+), 24 deletions(-) diff --git a/ASCEE_lasp.lyx b/ASCEE_lasp.lyx index b34ed14..5641ab0 100644 --- a/ASCEE_lasp.lyx +++ b/ASCEE_lasp.lyx @@ -4,7 +4,7 @@ \begin_header \save_transient_properties true \origin unavailable -\textclass article +\textclass memoir \begin_preamble \input{tex/preamble_article.tex} \end_preamble @@ -15,8 +15,8 @@ \language_package babel \inputencoding utf8 \fontencoding global -\font_roman "libertine" "Linux Libertine O" -\font_sans "default" "Courier New" +\font_roman "libertine" "Libertinus Sans" +\font_sans "default" "default" \font_typewriter "default" "default" \font_math "libertine-ntxm" "auto" \font_default_family default @@ -31,7 +31,7 @@ \default_output_format default \output_sync 1 \output_sync_macro "\synctex=1" -\bibtex_command biber +\bibtex_command default \index_command default \paperfontsize 10 \spacing single @@ -551,6 +551,10 @@ confidential \end_layout +\begin_layout Chapter +Power spectra estimation +\end_layout + \begin_layout Section Fourier transform vs discrete Fourier transform \end_layout @@ -718,7 +722,7 @@ Sample frequency: \end_layout \begin_layout Standard -Frequency resolution +Frequency resolution: \begin_inset Formula \begin{equation} \Delta f=\frac{f_{s}}{N_{\mathrm{DFT}}}, @@ -735,7 +739,7 @@ i.e. \end_layout \begin_layout Standard -Definition of the DFT: +Our definition of the DFT: \end_layout \begin_layout Standard @@ -1089,11 +1093,11 @@ w_{N}=0.01 \end_layout -\begin_layout Section +\begin_layout Chapter Impedance tube \end_layout -\begin_layout Subsection +\begin_layout Section Design aspects \end_layout @@ -1742,7 +1746,7 @@ where ). \end_layout -\begin_layout Subsection +\begin_layout Section Method for computing the sample impedance, absorption and reflection coefficient \end_layout @@ -2017,12 +2021,65 @@ Nonlinearities Noise \end_layout +\begin_layout Chapter +Digital signal processing +\end_layout + \begin_layout Section Filter bank design \end_layout \begin_layout Subsection -Overlap-save method +FIR Filter +\end_layout + +\begin_layout Standard +An FIR filter performs the operation: +\begin_inset Formula +\begin{equation} +y[n]=\boldsymbol{h}*\boldsymbol{x}[n]\equiv\sum_{m=0}^{N-1}h[m]x[n-m]. +\end{equation} + +\end_inset + +This operation can be implemented in time domain, or in frequency domain. + Notably the +\begin_inset Quotes eld +\end_inset + +fast convolution form +\begin_inset Quotes erd +\end_inset + + is of interest, as it requires fewer operations for high +\begin_inset Formula $N$ +\end_inset + + (smaller complexity). +\end_layout + +\begin_layout Subsubsection +Fast convolution: overlap-save method +\end_layout + +\begin_layout Standard +Definitions: +\end_layout + +\begin_layout Itemize +FIR Filter length: +\begin_inset Formula $N$ +\end_inset + + +\end_layout + +\begin_layout Itemize +Block length of inputs: +\begin_inset Formula $L$ +\end_inset + + \end_layout \begin_layout Standard @@ -2047,7 +2104,7 @@ status open \align center \begin_inset Graphics filename img/overlap_save.pdf - width 90text% + width 70text% \end_inset @@ -2055,12 +2112,19 @@ status open \begin_inset Caption Standard \begin_layout Plain Layout - +Overlap-save algorithm \end_layout \end_inset +\begin_inset CommandInset label +LatexCommand label +name "fig:schematic_overlapsave" + +\end_inset + + \end_layout \end_inset @@ -2069,7 +2133,7 @@ status open \end_layout \begin_layout Standard -The yellow blocks are saved for the next +The yellow blocks are saved for the next block. \end_layout \begin_layout Section @@ -2246,7 +2310,7 @@ H\left(\omega\right)=H[z=e^{i\omega T}], For the DSP equation: \begin_inset Formula \begin{equation} -H(\omega)=\frac{\sum\limits _{p=0}^{P}a_{p}e^{-ip\Omega}}{1-\sum\limits _{m=1}^{M}b_{m}e^{-im\Omega}} +H(\omega)=\frac{\sum\limits _{p=0}^{P-1}a_{p}e^{-ip\Omega}}{1-\sum\limits _{m=1}^{M-1}b_{m}e^{-im\Omega}} \end{equation} \end_inset @@ -2595,6 +2659,146 @@ Example: 1000 Hz octave band: pass-band is from 750 Hz to 1500 Hz. Use a Hamming window to reduce the pass and stop-band ripple. \end_layout +\begin_layout Subsection +First order digital high pass +\end_layout + +\begin_layout Standard +A simple digital high-pass filter can be implemented using: +\begin_inset Formula +\begin{equation} +G(s)=\frac{\tau s}{1+\tau s}, +\end{equation} + +\end_inset + +where +\begin_inset Formula $\tau$ +\end_inset + + is the +\begin_inset Formula $-3$ +\end_inset + + +\begin_inset space ~ +\end_inset + +dB time constant, as when +\begin_inset Formula $\omega=\tau^{-1}$ +\end_inset + +, +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Formula $|G|=\frac{1}{\sqrt{2}}$ +\end_inset + +. +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +\begin_inset Formula $2\left(\omega\tau\right)^{2}=1+\left(\omega\tau\right)^{2}$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\left(\omega\tau\right)^{2}=1$ +\end_inset + + +\end_layout + +\end_inset + + Such that the cut-on frequency is: +\begin_inset Formula +\begin{equation} +\frac{1}{2\pi f_{c}}=\tau. +\end{equation} + +\end_inset + +Filling in, we find: +\begin_inset Formula +\begin{equation} +G(s)=\frac{\frac{s}{2\pi f_{c}}}{1+\frac{s}{2\pi f_{c}}}, +\end{equation} + +\end_inset + + Applying the bilinear transform, we find: +\begin_inset Note Note +status open + +\begin_layout Plain Layout +\begin_inset Formula $G(s)=\frac{2\pi f_{c}s}{1+2\pi f_{c}s},$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Bilinear: +\begin_inset Formula $2f_{s}\frac{z-1}{z+1},$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\frac{2f_{s}\tau\left(z-1\right)}{2f_{s}\tau\left(z-1\right)+z+1}$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Readjust: +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\frac{2f_{s}\tau\left(1-z^{-1}\right)}{2f_{s}\tau\left(1-z^{-1}\right)+1+z^{-1}}$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Make denominator a0 1: +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\frac{\frac{2f_{s}\tau}{\left(1+2f_{s}\tau\right)}\left(1-z^{-1}\right)}{1+\frac{\left(1-2f_{s}\tau\right)}{\left(1+2f_{s}\tau\right)}z^{-1}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +G[z]=\frac{\frac{2f_{s}\tau}{\left(1+2f_{s}\tau\right)}\left(1-z^{-1}\right)}{1+\frac{\left(1-2f_{s}\tau\right)}{\left(1+2f_{s}\tau\right)}z^{-1}} +\end{equation} + +\end_inset + + +\end_layout + \begin_layout Section Sound level meter implementation \end_layout @@ -2611,7 +2815,7 @@ Fast time-weighted sound level,of the A-weighted pressure signal : \begin_inset Formula \begin{equation} -L_{AF}=10\log_{10}\left(\frac{1}{\tau_{F}}\int\limits _{-\infty}^{t}p_{A}^{2}\left(\xi\right)e^{-\left(t-\xi\right)/\tau_{F}}\right)-10\log_{10}\left(p_{\mathrm{ref}}^{2}\right), +L_{AF}=10\log_{10}\left(\frac{1}{\tau_{F}}\int\limits _{-\infty}^{t}p_{A}^{2}\left(\xi\right)e^{-\left(t-\xi\right)/\tau_{F}}\mathrm{d}\xi\right)-10\log_{10}\left(p_{\mathrm{ref}}^{2}\right), \end{equation} \end_inset @@ -2662,6 +2866,26 @@ ms Implementation of single pole low pass filter \end_layout +\begin_layout Standard +The time weighting is specified as: +\begin_inset Formula +\begin{equation} +L_{\mathrm{AF}}(t)=10\log_{10}\left[\frac{1}{p_{\mathrm{ref}}^{2}}\frac{1}{\tau_{F}}\int_{-\infty}^{t}p_{\mathrm{A}}^{2}(t)\exp\left(-\frac{\left(t-\xi\right)}{\tau_{\mathrm{F}}}\right)\mathrm{d}\xi\right]. +\end{equation} + +\end_inset + +The Laplace transform of the integral is: +\begin_inset Formula +\begin{equation} +\mathcal{L}\left[\frac{1}{\tau_{F}}\int_{-\infty}^{t}p_{\mathrm{A}}^{2}\exp\left(-\frac{\left(t-\xi\right)}{\tau_{\mathrm{F}}}\right)\mathrm{d}\xi\right]=p_{\mathrm{A}}^{2}(s)\frac{1}{1+\tau_{F}s} +\end{equation} + +\end_inset + + +\end_layout + \begin_layout Standard A single pole low pass filter has a frequency response of \begin_inset Formula @@ -2671,6 +2895,14 @@ G_{\mathrm{splp}}=\frac{1}{1+\tau s}, \end_inset + +\end_layout + +\begin_layout Subsubsection +Implementation using Bilinear transform +\end_layout + +\begin_layout Standard we create a digital filter from this one using the bilinear transform: \begin_inset Formula \begin{equation} @@ -2691,22 +2923,32 @@ status collapsed \end_layout \begin_layout Plain Layout -\begin_inset Formula $G_{\mathrm{splp},d}=\frac{z+1}{\left(1+\tau2f_{s}\right)z+1-\tau2f_{s}}$ +Filling in +\begin_inset Formula $z=\exp(i\omega/f_{s})$ +\end_inset + + and setting +\begin_inset Formula $\omega=0$ \end_inset \end_layout \begin_layout Plain Layout -Divide by -\begin_inset Formula $z$ + +\series bold +\begin_inset Formula $G_{\mathrm{splp},d}(\omega=0)=1$ \end_inset -, both numerator and denominator: + \end_layout \begin_layout Plain Layout -\begin_inset Formula $G_{\mathrm{splp},d}=\frac{1+z^{-1}}{\left(1+\tau2f_{s}\right)+\left(1-\tau2f_{s}\right)z^{-1}}$ +============== +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $G_{\mathrm{splp},d}=\frac{1+z^{-1}}{\left(1+2f_{s}\tau\right)+\left(1-2f_{s}\tau\right)z^{-1}}$ \end_inset @@ -2741,7 +2983,31 @@ Normalizing such that \end_layout \begin_layout Plain Layout -– +– Check: filling in +\begin_inset Formula $z=0$ +\end_inset + + should give a unit gain: +\end_layout + +\begin_layout Plain Layout + +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none +\begin_inset Formula $G_{\mathrm{splp},d}(z=0)=\frac{\left(1+2\tau f_{s}\right)^{-1}}{\frac{\left(1-\tau2f_{s}\right)}{\left(1+2\tau f_{s}\right)}}$ +\end_inset + + \end_layout \end_inset @@ -2749,7 +3015,7 @@ Normalizing such that \begin_inset Formula \begin{equation} -G_{\mathrm{splp},d}=\frac{1+z^{-1}}{\left(\frac{1}{\tau}+2f_{s}\right)+\left(\frac{1}{\tau}-2f_{s}\right)z^{-1}}, +G_{\mathrm{splp},d}=\frac{\left(1+2\tau f_{s}\right)^{-1}\left(1+z^{-1}\right)}{1+\frac{\left(1-\tau2f_{s}\right)}{\left(1+2\tau f_{s}\right)}z^{-1}}, \end{equation} \end_inset @@ -2775,9 +3041,10 @@ No correction for frequency warping has been done, as for all cases . The output frequency of the sound level meter will be decimated to a sampling - frequency, where the single pole low pass filter has a -20 dB point: + frequency, where the single pole low pass filter has a -20 dB point, such + that aliasing is at max ~ 0.1 times any oscillation: \begin_inset Note Note -status open +status collapsed \begin_layout Plain Layout \begin_inset Formula $\frac{1-0.01}{0.01}=\left|\tau s\right|\Rightarrow\left|s\right|=\frac{1}{\tau}\frac{1-0.01}{0.01}\Rightarrow f_{s,\mathrm{slm}}=$ @@ -2861,6 +3128,156 @@ id>N-o \end_inset +\end_layout + +\begin_layout Subsubsection +Implementation using the matched Z-transform method +\begin_inset Formula +\begin{equation} +G_{\mathrm{splp},d}=\frac{1-\exp\left(-\left(f_{s}\tau\right)^{-1}\right)}{1-\exp\left(-\left(f_{s}\tau\right)^{-1}\right)z^{-1}} +\end{equation} + +\end_inset + + +\end_layout + +\begin_layout Standard +By setting unity gain for +\begin_inset Formula $\omega=0$ +\end_inset + +, this results in the following simple difference equation: +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +\begin_inset Formula $Y[z]=\frac{1-\exp\left(\left(f_{s}\tau_{d}\right)^{-1}\right)}{1-\exp\left(\left(f_{s}\tau_{d}\right)^{-1}\right)z^{-1}}X[z]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $y[n]=\exp\left(\left(f_{s}\tau_{d}\right)^{-1}\right)y[n-1]+\left[1-\exp\left(\left(f_{s}\tau_{d}\right)^{-1}\right)\right]x[n]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{align} +y[n] & =\alpha y[n-1]+\left(1-\alpha\right)x[n],\\ +\alpha & =\exp\left(-\frac{1}{f_{s}\tau}\right) +\end{align} + +\end_inset + + +\end_layout + +\begin_layout Standard +This way: the number of dB's / s, that the level is decaying, after signal + stop is: +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +\begin_inset Formula +\[ +y[n]=\alpha y[n-1] +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +For +\begin_inset Formula $\alpha>0$ +\end_inset + +: +\begin_inset Formula +\[ +|y[n]|=\alpha|y[n-1]| +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula +\[ +y[n]=y[0]\alpha^{n} +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula +\[ +L\left(y[n]\right)=20\log\left(|y[n]\right)=20\log\left(|y(0)|\right)+20\log\left(\alpha^{n}\right) +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula +\begin{align*} +L(y(t)) & =20\log\left(|y[n=\frac{t}{\Delta t}]\right)=20\log\left(|y(0)|\right)+\frac{t}{\Delta t}20\log\left(\alpha\right)\\ + & =20\log\left(|y(0)|\right)+t\frac{1}{\Delta t}\underbrace{20\log\left(\alpha\right)} +\end{align*} + +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +\mathrm{Decay\,rate\,dB\,/\,s}\approx\frac{20}{\Delta t}\log\left(\alpha\right) +\end{equation} + +\end_inset + + +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +And the other way around: +\begin_inset Formula $20\log\left(\alpha\right)=d\Delta t$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\alpha=10^{\frac{d\Delta t}{20}}$ +\end_inset + + +\end_layout + +\end_inset + + \end_layout \begin_layout Subsection @@ -3864,6 +4281,533 @@ h=s^{-1}*\left(y[n]-e[n]\right) \end_inset +\end_layout + +\begin_layout Section +Transfer function estimation using least squares estimation and a FIR filter +\end_layout + +\begin_layout Standard +This is a time domain method to estimate the transfer function by minimizing + the error. + For a FIR system we can write +\begin_inset Formula +\begin{equation} +y[n]=\sum_{l=0}^{L-1}w[n-l]x[n-l]+d[n]=\boldsymbol{w}\cdot\boldsymbol{x}[n]+d[n], +\end{equation} + +\end_inset + +where +\begin_inset Formula $\boldsymbol{w}$ +\end_inset + + is the vector of FIR coefficients +\begin_inset Formula $d[n]$ +\end_inset + + is an unknown disturbance (noise), and +\begin_inset Formula $\boldsymbol{x}[n]$ +\end_inset + + the time history at discrete time point +\begin_inset Formula $n$ +\end_inset + + containing +\begin_inset Formula $L$ +\end_inset + + points. + If we write +\begin_inset Formula +\begin{equation} +e[n]=y[n]-\boldsymbol{w}\cdot\boldsymbol{x}[n], +\end{equation} + +\end_inset + +we can generate the cost function +\begin_inset Formula +\begin{equation} +J=\sum_{n=0}^{N-1}e^{2}[n] +\end{equation} + +\end_inset + +to be minimized, we can estimate the optimal filter +\begin_inset Formula $\boldsymbol{w}$ +\end_inset + + by taking the derivative of +\begin_inset Formula $J$ +\end_inset + + w.r.t. + to +\begin_inset Formula $\boldsymbol{w}$ +\end_inset + + and setting that to 0. + This results in: +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +\begin_inset Formula $\frac{\partial J}{\partial\boldsymbol{w}}=\frac{\partial}{\partial\boldsymbol{w}}\sum_{n=0}^{N-1}\left[e[n]^{2}\right]=\sum_{n=0}^{N-1}\left[2e[n]\frac{\partial e[n]}{\partial\boldsymbol{w}}\right]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Working out: +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $\frac{\partial J}{\partial\boldsymbol{w}}=\sum_{n=0}^{N-1}\left[2e[n]\boldsymbol{x}[n]\right]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Setting this to +\begin_inset Formula $\boldsymbol{0}$ +\end_inset + +: +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula +\[ +\sum_{n=0}^{N-1}\left[2\left(y[n]-\boldsymbol{w}\cdot\boldsymbol{x}[n]\right)\boldsymbol{x}[n]\right]=\boldsymbol{0} +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Defining the matrix +\begin_inset Formula $X_{nl}$ +\end_inset + + containing the time history at time at time instance +\begin_inset Formula $n$ +\end_inset + + and history point +\begin_inset Formula $l$ +\end_inset + +, and +\begin_inset Formula $Y_{nl}$ +\end_inset + + containing the output signal at time instance +\begin_inset Formula $n$ +\end_inset + +, we can write +\begin_inset Formula $\hat{\boldsymbol{y}}=\boldsymbol{X}\cdot\boldsymbol{w}$ +\end_inset + +, such that: +\begin_inset Formula +\[ +\sum_{n=0}^{N-1}\left[2\left(y[n]-\boldsymbol{w}\cdot\boldsymbol{x}[n]\right)\boldsymbol{x}[n]\right]=\boldsymbol{0} +\] + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +For all +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Vector fitting +\end_layout + +\begin_layout Itemize +Method to estimate poles and zeros (rational transfer function estimation) + of an arbitrary transfer function. + Guaranteed stable poles. +\end_layout + +\begin_layout Standard +Suppose we want to fit the transfer function +\begin_inset Formula $f(s)$ +\end_inset + + using a rational function approximation as: +\begin_inset Formula +\begin{equation} +f(s)\approx\sum_{n=1}^{N}\frac{c_{n}}{s-a_{n}}+d+sh, +\end{equation} + +\end_inset + +where +\begin_inset Formula $a_{n}$ +\end_inset + + are the poles. + We introduce an +\emph on +unknown +\emph default + function +\begin_inset Formula $\sigma(s)$ +\end_inset + + which shares the same poles as +\begin_inset Formula $f(s)$ +\end_inset + +, but with different zeros: +\begin_inset Formula +\begin{equation} +\sigma(s)=\sum_{n=1}^{N}\frac{\tilde{c}_{n}}{s-a_{n}}+1 +\end{equation} + +\end_inset + +We create the augmented problem: +\begin_inset Formula +\begin{equation} +\left[\begin{array}{c} +\sigma(s)f(s)\\ +\sigma(s) +\end{array}\right]\approx\left[\begin{array}{c} +\sum\limits _{n=1}^{N}\frac{c_{n}}{s-a_{n}}+d+sh\\ +\sum_{n=1}^{N}\frac{\tilde{c}_{n}}{s-a_{n}}+k(s) +\end{array}\right]. +\end{equation} + +\end_inset + +So we assume that we can fit +\begin_inset Formula $\sigma(s)f(s)$ +\end_inset + + with the top equation, and +\begin_inset Formula $\sigma(s)$ +\end_inset + + with the bottom equation. + By multiplying the bottom equation with +\begin_inset Formula $f(s)$ +\end_inset + +, we find: +\begin_inset Formula +\begin{equation} +\underbrace{\sum\limits _{n=1}^{N}\frac{c_{n}}{s-a_{n}}+d+sh}_{\left(\sigma f\right)_{\mathrm{fit}}}=\underbrace{\left(\sum_{n=1}^{N}\frac{\tilde{c}_{n}}{s-a_{n}}+1\right)f(s)}_{\sigma_{\mathrm{fit}}(s)f(s)}, +\end{equation} + +\end_inset + + +\end_layout + +\begin_layout Standard +For a certain set of starting poles +\begin_inset Formula $a_{n}$ +\end_inset + +, we are able to fit the zeros. +\end_layout + +\begin_layout Section +Soft gain transitioning +\end_layout + +\begin_layout Standard +Equation governing gain evolution, running at each sample: +\begin_inset Formula +\begin{equation} +\Delta g=\alpha\left(g_{\mathrm{required}}-g_{\mathrm{old}}\right), +\end{equation} + +\end_inset + +which can be written as: +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +\begin_inset Formula $G[z]\left(1-z^{-1}\right)=\alpha\left(G_{\mathrm{required}}[z]-z^{-1}G[z]\right)$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $G[z]\left(1-z^{-1}\right)+\alpha z^{-1}G[z]=\alpha G_{\mathrm{required}}[z]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $G[z]=\frac{\alpha}{1+\left(\alpha-1\right)z^{-1}}G_{\mathrm{required}}[z]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +G[z]=\frac{\alpha}{1+\left(\alpha-1\right)z^{-1}}G_{\mathrm{required}}(z), +\end{equation} + +\end_inset + +which is an approximate first order digital low-pass filter: +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Filling in for +\begin_inset Formula $H(s)=H[z=e^{sT}],$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $G\left(s\right)=\frac{\alpha}{1+\left(\alpha-1\right)\exp\left(-s/f_{s}\right)}G_{\mathrm{required}}(s)$ +\end_inset + +,for +\begin_inset Formula $s\ll f_{s}$ +\end_inset + + can be written as: +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $G\left(s\right)\approx\frac{\alpha}{\alpha+\left(1-\alpha\right)s/f_{s}}G_{\mathrm{required}}(s)$ +\end_inset + + which has a pole at approximately: +\begin_inset Formula $s_{p}=f_{s}\left[1-\frac{1}{1-\alpha}\right]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +Fill in: +\begin_inset Formula $\alpha=0.1\Rightarrow s_{p}=f_{s}\left[1-\frac{1}{0.9}\right]$ +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Formula $s=f_{s}\left[-9\right]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +G\left(s\right)\approx\frac{\alpha}{\alpha+s/f_{s}}G_{\mathrm{required}}(s)\qquad s\ll f_{s},0<\alpha\ll1 +\end{equation} + +\end_inset + +Hence for the transition time constant, +\begin_inset Formula $s_{p}=-\frac{2\pi}{\tau_{p}}$ +\end_inset + +, we find: +\begin_inset Note Note +status open + +\begin_layout Plain Layout +\begin_inset Formula $\alpha=1-\frac{1}{1+\frac{2\pi}{\tau_{p}f_{s}}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +\alpha=1-\frac{1}{1+\frac{2\pi}{\tau_{p}f_{s}}} +\end{equation} + +\end_inset + + +\end_layout + +\begin_layout Chapter +Programming aspects +\end_layout + +\begin_layout Section +Array ordering +\end_layout + +\begin_layout Itemize +A 2D array of is called in +\emph on +row-major order +\emph default + if each of the rows is subsequentially put in memory. + This means, we can find element +\begin_inset Formula $A_{\mathrm{row},\mathrm{col}}=A_{ij}$ +\end_inset + + in memory +\begin_inset Formula $A[i+j\mathrm{n_{rows}}]$ +\end_inset + +. + This is also called a C-contiguous array. +\end_layout + +\begin_layout Itemize +A 2D array of is called in +\emph on +column-major order +\emph default + if each of the columns is subsequentially put in memory. + This means, we can find element +\begin_inset Formula $A_{\mathrm{row},\mathrm{col}}=A_{ij}$ +\end_inset + + in memory +\begin_inset Formula $A[in_{\mathrm{cols}}+j]$ +\end_inset + +. + This is also called a Fortran-contiguous array. + For the +\family typewriter +dmat +\family default + structure in +\family typewriter +LASP +\family default +, we have chosen to use the Fortran-contiguous convention. +\end_layout + +\begin_layout Standard +Numpy works under the hood with +\family typewriter +strides +\family default +, strides are the values with which each array index needs to be multiplied + to obtain the value of each index in an +\begin_inset Formula $N$ +\end_inset + +-dimensional array. + +\family typewriter +Strides +\family default + is a tuple containing +\begin_inset Formula $(a,b,c,\dots$ +\end_inset + +). + Such that +\begin_inset Formula $A[i,j,k,\dots]=A[ai+bj+ck+\dots]$ +\end_inset + +. + Strides are a method to have an arbitrary memory layout, and also provide + a very easy way to transpose an array over one dimension (just swap the + stride values in the tuple). +\end_layout + +\begin_layout Chapter +Beamforming +\end_layout + +\begin_layout Section +Near-field cardioid beamformer +\end_layout + +\begin_layout Standard +\begin_inset Formula +\begin{equation} +\boldsymbol{x}(\omega)=\boldsymbol{a}(\omega)s, +\end{equation} + +\end_inset + +where +\begin_inset Formula $s$ +\end_inset + + is the source signal, and +\begin_inset Formula $\boldsymbol{a}(\omega)$ +\end_inset + + the transfer from the source signal to the measured signal +\begin_inset Formula $\boldsymbol{x}$ +\end_inset + +. + Now, we would like to generate a signal +\begin_inset Formula $y=\boldsymbol{w}^{H}\boldsymbol{x}$ +\end_inset + +, that is sensitive to signals at position +\begin_inset Formula $\boldsymbol{r}_{s}$ +\end_inset + + and not sensitive to signals at other positions. + Therefore, the optimal beamformer is such that: +\begin_inset Formula +\begin{align} +\boldsymbol{w}^{H}\boldsymbol{a}s_{\boldsymbol{r}=\boldsymbol{r}_{0}} & =1,\\ +\boldsymbol{w}^{H}\boldsymbol{a}s_{\boldsymbol{r}\neq\boldsymbol{r}_{0}} & =0. +\end{align} + +\end_inset + + Now, the sensitivity to a source is: +\begin_inset Formula +\begin{equation} +\boldsymbol{a}=\left\{ \begin{array}{c} +\exp\left(-i\omega R_{1}/c_{0}\right)/R_{1}\\ +\exp\left(-i\omega R_{2}/c_{0}\right)/R_{2}\\ +\vdots\\ +\\ +\end{array}\right\} +\end{equation} + +\end_inset + + \end_layout \begin_layout Standard diff --git a/img/overlap_save.pdf b/img/overlap_save.pdf index b6bb32f42e47952cb26f78cac145a03130bea4f2..bea522b1b1404a9cb653f01699e5466b5444b450 100644 GIT binary patch delta 32140 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

    dsCT5t&Xn;P84 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 MCL^Pank?r30Vjs`Q~&?~