Acronyme, Nomenklatur
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.2 MiB |
|
Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 953 KiB After Width: | Height: | Size: 982 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 614 KiB After Width: | Height: | Size: 618 KiB |
|
Before Width: | Height: | Size: 592 KiB After Width: | Height: | Size: 617 KiB |
|
Before Width: | Height: | Size: 502 KiB After Width: | Height: | Size: 564 KiB |
|
Before Width: | Height: | Size: 930 KiB After Width: | Height: | Size: 956 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
157
acronyms.aux
Normal file
@@ -0,0 +1,157 @@
|
||||
\relax
|
||||
\newacro{ANR}[\AC@hyperlink{ANR}{ANR}]{Adaptive Noise Reduction}
|
||||
\newacro{ANC}[\AC@hyperlink{ANC}{ANC}]{Adaptive Noise Cancellation}
|
||||
\newacro{DSP}[\AC@hyperlink{DSP}{DSP}]{Digital Signal Processor}
|
||||
\newacro{CI}[\AC@hyperlink{CI}{CI}]{Cochlear Implant}
|
||||
\newacro{WHO}[\AC@hyperlink{WHO}{WHO}]{World Health Organization}
|
||||
\newacro{FIR}[\AC@hyperlink{FIR}{FIR}]{Finite Impulse Response}
|
||||
\newacro{IIR}[\AC@hyperlink{IIR}{IIR}]{Infinite Impulse Response}
|
||||
\@setckpt{acronyms}{
|
||||
\setcounter{page}{5}
|
||||
\setcounter{equation}{0}
|
||||
\setcounter{enumi}{0}
|
||||
\setcounter{enumii}{0}
|
||||
\setcounter{enumiii}{0}
|
||||
\setcounter{enumiv}{0}
|
||||
\setcounter{footnote}{0}
|
||||
\setcounter{mpfootnote}{0}
|
||||
\setcounter{part}{0}
|
||||
\setcounter{section}{0}
|
||||
\setcounter{subsection}{0}
|
||||
\setcounter{subsubsection}{0}
|
||||
\setcounter{paragraph}{0}
|
||||
\setcounter{subparagraph}{0}
|
||||
\setcounter{figure}{0}
|
||||
\setcounter{table}{0}
|
||||
\setcounter{float@type}{16}
|
||||
\setcounter{tabx@nest}{0}
|
||||
\setcounter{listtotal}{0}
|
||||
\setcounter{listcount}{0}
|
||||
\setcounter{liststart}{0}
|
||||
\setcounter{liststop}{0}
|
||||
\setcounter{citecount}{0}
|
||||
\setcounter{citetotal}{0}
|
||||
\setcounter{multicitecount}{0}
|
||||
\setcounter{multicitetotal}{0}
|
||||
\setcounter{instcount}{0}
|
||||
\setcounter{maxnames}{3}
|
||||
\setcounter{minnames}{1}
|
||||
\setcounter{maxitems}{3}
|
||||
\setcounter{minitems}{1}
|
||||
\setcounter{citecounter}{0}
|
||||
\setcounter{maxcitecounter}{0}
|
||||
\setcounter{savedcitecounter}{0}
|
||||
\setcounter{uniquelist}{0}
|
||||
\setcounter{uniquename}{0}
|
||||
\setcounter{refsection}{0}
|
||||
\setcounter{refsegment}{0}
|
||||
\setcounter{maxextratitle}{0}
|
||||
\setcounter{maxextratitleyear}{0}
|
||||
\setcounter{maxextraname}{3}
|
||||
\setcounter{maxextradate}{0}
|
||||
\setcounter{maxextraalpha}{0}
|
||||
\setcounter{abbrvpenalty}{50}
|
||||
\setcounter{highnamepenalty}{50}
|
||||
\setcounter{lownamepenalty}{25}
|
||||
\setcounter{maxparens}{3}
|
||||
\setcounter{parenlevel}{0}
|
||||
\setcounter{blx@maxsection}{0}
|
||||
\setcounter{mincomprange}{10}
|
||||
\setcounter{maxcomprange}{100000}
|
||||
\setcounter{mincompwidth}{1}
|
||||
\setcounter{afterword}{0}
|
||||
\setcounter{savedafterword}{0}
|
||||
\setcounter{annotator}{0}
|
||||
\setcounter{savedannotator}{0}
|
||||
\setcounter{author}{0}
|
||||
\setcounter{savedauthor}{0}
|
||||
\setcounter{bookauthor}{0}
|
||||
\setcounter{savedbookauthor}{0}
|
||||
\setcounter{commentator}{0}
|
||||
\setcounter{savedcommentator}{0}
|
||||
\setcounter{editor}{0}
|
||||
\setcounter{savededitor}{0}
|
||||
\setcounter{editora}{0}
|
||||
\setcounter{savededitora}{0}
|
||||
\setcounter{editorb}{0}
|
||||
\setcounter{savededitorb}{0}
|
||||
\setcounter{editorc}{0}
|
||||
\setcounter{savededitorc}{0}
|
||||
\setcounter{foreword}{0}
|
||||
\setcounter{savedforeword}{0}
|
||||
\setcounter{holder}{0}
|
||||
\setcounter{savedholder}{0}
|
||||
\setcounter{introduction}{0}
|
||||
\setcounter{savedintroduction}{0}
|
||||
\setcounter{namea}{0}
|
||||
\setcounter{savednamea}{0}
|
||||
\setcounter{nameb}{0}
|
||||
\setcounter{savednameb}{0}
|
||||
\setcounter{namec}{0}
|
||||
\setcounter{savednamec}{0}
|
||||
\setcounter{translator}{0}
|
||||
\setcounter{savedtranslator}{0}
|
||||
\setcounter{shortauthor}{0}
|
||||
\setcounter{savedshortauthor}{0}
|
||||
\setcounter{shorteditor}{0}
|
||||
\setcounter{savedshorteditor}{0}
|
||||
\setcounter{labelname}{0}
|
||||
\setcounter{savedlabelname}{0}
|
||||
\setcounter{institution}{0}
|
||||
\setcounter{savedinstitution}{0}
|
||||
\setcounter{lista}{0}
|
||||
\setcounter{savedlista}{0}
|
||||
\setcounter{listb}{0}
|
||||
\setcounter{savedlistb}{0}
|
||||
\setcounter{listc}{0}
|
||||
\setcounter{savedlistc}{0}
|
||||
\setcounter{listd}{0}
|
||||
\setcounter{savedlistd}{0}
|
||||
\setcounter{liste}{0}
|
||||
\setcounter{savedliste}{0}
|
||||
\setcounter{listf}{0}
|
||||
\setcounter{savedlistf}{0}
|
||||
\setcounter{location}{0}
|
||||
\setcounter{savedlocation}{0}
|
||||
\setcounter{organization}{0}
|
||||
\setcounter{savedorganization}{0}
|
||||
\setcounter{origlocation}{0}
|
||||
\setcounter{savedoriglocation}{0}
|
||||
\setcounter{origpublisher}{0}
|
||||
\setcounter{savedorigpublisher}{0}
|
||||
\setcounter{publisher}{0}
|
||||
\setcounter{savedpublisher}{0}
|
||||
\setcounter{language}{0}
|
||||
\setcounter{savedlanguage}{0}
|
||||
\setcounter{origlanguage}{0}
|
||||
\setcounter{savedoriglanguage}{0}
|
||||
\setcounter{pageref}{0}
|
||||
\setcounter{savedpageref}{0}
|
||||
\setcounter{textcitecount}{0}
|
||||
\setcounter{textcitetotal}{0}
|
||||
\setcounter{textcitemaxnames}{0}
|
||||
\setcounter{biburlbigbreakpenalty}{100}
|
||||
\setcounter{biburlbreakpenalty}{200}
|
||||
\setcounter{biburlnumpenalty}{0}
|
||||
\setcounter{biburlucpenalty}{0}
|
||||
\setcounter{biburllcpenalty}{0}
|
||||
\setcounter{smartand}{1}
|
||||
\setcounter{bbx:relatedcount}{0}
|
||||
\setcounter{bbx:relatedtotal}{0}
|
||||
\setcounter{parentequation}{0}
|
||||
\setcounter{lstnumber}{1}
|
||||
\setcounter{FancyVerbLine}{0}
|
||||
\setcounter{linenumber}{1}
|
||||
\setcounter{LN@truepage}{4}
|
||||
\setcounter{FancyVerbWriteLine}{0}
|
||||
\setcounter{FancyVerbBufferLine}{0}
|
||||
\setcounter{FV@TrueTabGroupLevel}{0}
|
||||
\setcounter{FV@TrueTabCounter}{0}
|
||||
\setcounter{FV@HighlightLinesStart}{0}
|
||||
\setcounter{FV@HighlightLinesStop}{0}
|
||||
\setcounter{FancyVerbLineBreakLast}{0}
|
||||
\setcounter{FV@BreakBufferDepth}{0}
|
||||
\setcounter{minted@FancyVerbLineTemp}{0}
|
||||
\setcounter{listing}{0}
|
||||
\setcounter{lstlisting}{0}
|
||||
}
|
||||
10
acronyms.tex
Normal file
@@ -0,0 +1,10 @@
|
||||
\section*{Acronyms}
|
||||
\begin{acronym}[ANR]
|
||||
\acro{ANR}{Adaptive Noise Reduction}
|
||||
\acro{ANC}{Adaptive Noise Cancellation}
|
||||
\acro{DSP}{Digital Signal Processor}
|
||||
\acro{CI}{Cochlear Implant}
|
||||
\acro{WHO}{World Health Organization}
|
||||
\acro{FIR}{Finite Impulse Response}
|
||||
\acro{IIR}{Infinite Impulse Response}
|
||||
\end{acronym}
|
||||
@@ -1,11 +1,11 @@
|
||||
\section{Introduction}
|
||||
\subsection{Motivation}
|
||||
According to the World Health Organization (WHO), around 1.6 billion people over 14 years worldwide suffer from any kind of hearing loss. Included in this 1.6 billion people, around 430 million suffer from disabling hearing loss (up to deafness), requiring rehabilitation. In the case of disabling hearing loss, the possibility of using an implant system solution has revolutionized auditory rehabilitation by restoring partial hearing. Despite steady progress in implant technology over the past decades, the system still faces its limitations. Complex auditory environments, like static noises overlain by a person speaking, can still propose a considerable challenge for users of auditory implants compared to people with a healthy hearing. \\ \\
|
||||
According to the \ac{WHO}, around 1.6 billion people over 14 years worldwide suffer from any kind of hearing loss. Included in this 1.6 billion people, around 430 million suffer from disabling hearing loss (up to deafness), requiring rehabilitation. In the case of disabling hearing loss, the possibility of using an implant system solution has revolutionized auditory rehabilitation by restoring partial hearing. Despite steady progress in implant technology over the past decades, the system still faces its limitations. Complex auditory environments, like static noises overlain by a person speaking, can still propose a considerable challenge for users of auditory implants compared to people with a healthy hearing. \\ \\
|
||||
Therefore, the improvement of implant performance in regard to the suppression of disturbance noises is therefore a crucial step in the development of more user-friendly implant solutions which provide users with more natural sound perception and greater listening comfort.
|
||||
\\ \\
|
||||
By addressing these challenges, this work aims to contribute to the next generation of cochlear implant technology, ultimately enhancing the auditory experience and quality of life for people with severe hearing impairments.
|
||||
\subsection{Introduction to cochlear implant systems}
|
||||
A cochlear implant (CI) System is a specialized form of hearing aid, used to restore partly or complete deafness. In contrary to standard hearing aids, CI's do not just amplify the audio signal received by the ear, but stimulate the auditory nerve itself directly through electric pulses.\\ \\
|
||||
A \ac{CI} System is a specialized form of hearing aid, used to restore partly or complete deafness. In contrary to standard hearing aids, \ac{CI}'s do not just amplify the audio signal received by the ear, but stimulate the auditory nerve itself directly through electric pulses.\\ \\
|
||||
Usually, a CI system consists out of an external processor with a microphone (``audio processor'') receiving the ambient audio signal, processing it, and then transmitting it inductively via a transmission coil through the skin to the cochlear implant itself, implanted on the patient's skull (see Figure \ref{fig:fig_synchrony}). The CI stimulates the auditory nerves inside the cochlear through charge pulses, thus enabling the patient to hear the received audio signal as sound.\\
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
@@ -122,7 +122,7 @@ Although active noise cancellation and adaptive noise reduction share obvious si
|
||||
\caption{The basic idea of an adaptive filter design for noise reduction.}
|
||||
\label{fig:fig_anr}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_anr} shows the basic concept of an adaptive filter design, represented through a feedback filter application. The target signal sensor (top) aims to receive the target signal and outputs the corrupted target signal $d[n]$, which consists out of the recorded target signal $s[n]$ and the corruption noise signal $n[n]$, whereas the noise signal sensor aims to receive (ideally) only the noise signal and outputs the recorded reference noise signal $x[n]$, which then feeds the adaptive filter. We assume at this point, that the corruption-noise signal is uncorrelated to the recorded target signal, and therefore separable from it. In addition, we assume, that the corruption noise signal is correlated to the reference noise signal, as it originates from the same source, but takes a different signal path. \\ \\ The adaptive filter removes a certain, noise-related, frequency part of the input signal and re-evaluates the output through its feedback design. The filter parameters are then adjusted and applied to the next sample to minimize the observed error $e[n]$, which also represents the approximated target signal $š[n]$. In reality, a signal contamination of the two sensors has to be expected, which will be illustrated in a more realistic signal flow diagram of an implanted CI system in chapter 2.6.
|
||||
\noindent Figure \ref{fig:fig_anr} shows the basic concept of an adaptive filter design, represented through a feedback filter application. The primary sensor (top) aims to receive the desired signal and outputs the corrupted signal $d[n]$, which consists out of the recorded desired signal $s[n]$ and the recorded corruption noise signal $n[n]$, whereas the secondary signal sensor aims to receive (ideally) only the noise signal and outputs the recorded reference noise signal $x[n]$, which then feeds the adaptive filter. We assume at this point, that the corruption noise signal is uncorrelated to the desired signal, and therefore separable from it. In addition, we assume, that the corruption noise signal is correlated to the reference noise signal, as it originates from the same source, but takes a different signal path. \\ \\ The adaptive filter removes a certain, noise-related, frequency part of the input signal and re-evaluates the output through its feedback design. The filter parameters are then adjusted and applied to the next sample to minimize the observed error $e[n]$, which also represents the approximated desired signal $š[n]$. In reality, a signal contamination of the two sensors has to be expected, which will be illustrated in a more realistic signal flow diagram of an implanted CI system in chapter 2.6.
|
||||
\subsubsection{Fully adaptive vs. hybrid filter design}
|
||||
The basic ANR concept illustrated in Figure \ref{fig:fig_anr} can be understood as a fully adaptive variant. A fully adaptive filter design works with a fixed number of coefficients of which everyone is updated after every sample processing. Even if this approach features the best performance in noise reduction, it also requires a relatively high amount of computing power, as every coefficient has to be re-calculated after every evaluation step.\\ \\
|
||||
To reduce the required computing power, a hybrid static/adaptive filter design can be taken into consideration instead (refer to Figure \ref{fig:fig_anr_hybrid}). In this approach, the initial fully adaptive filter is split into a fixed and an adaptive part - the static filter removes a certain, known, or estimated, frequency portion of the noise signal, whereas the adaptive part only has to adapt to the remaining, unforecastable, noise parts. This approach reduces the number of coefficients required to be adapted, therefore lowering the required computing power.
|
||||
@@ -141,13 +141,13 @@ Adaptive filters rely on an error metric to self-reliantely evaluate their perfo
|
||||
\label{equation_error}
|
||||
e[n] = d[n] - y[n] = š[n]
|
||||
\end{equation}
|
||||
The error signal $e[n]$, already illustrated in Figure \ref{fig:fig_anr} and \ref{fig:fig_anr_hybrid}, is calculated as the difference between the corrupted target signal $d[n]$ and the output signal of the filter $y[n]$.
|
||||
The error signal $e[n]$, already illustrated in Figure \ref{fig:fig_anr} and \ref{fig:fig_anr_hybrid}, is calculated as the difference between the corrupted signal $d[n]$ and the output signal of the filter $y[n]$.
|
||||
As we will see in the following chapters, a real world application of an adaptive filter system poses several challenges, which have to be taken into consideration when designing the filter. These challenges include:
|
||||
\begin{itemize}
|
||||
\item The error signal $e[n]$ is not a perfect representation of the recorded target signal $s[n]$ present in the corrupted target signal $d[n]$, as the adaptive filter can only approximate the noise signal based on its current coefficients, which in general, do not represent the optimal solution at that given time.
|
||||
\item The error signal $e[n]$ is not a perfect representation of the desired signal $s[n]$ present in the corrupted signal $d[n]$, as the adaptive filter can only approximate the noise signal based on its current coefficients, which in general, do not represent the optimal solution at that given time.
|
||||
\item Although, the corruption noise signal $n[n]$ and the reference noise signal $x[n]$ are correlated, they are not identical, as they take different signal paths from the noise source to their respective sensors. This discrepancy can lead to imperfect noise reduction, as the adaptive filter has to estimate the relationship between these two signals.
|
||||
\item The recorded target signal $s[n]$ is not directly available, as it is only available combined with the corruption noise signal $n[n]$ in the form of $d[n]$ while there is no reference available. Therefore, the error signal $e[n]$, respectively $š[n]$, of the adaptive filter serves as an approximation of the clean target signal and is used as an indirect measure of the filter's performance, guiding the adaptation process by its own stepwise minimization.
|
||||
\item The reference noise signal $x[n]$ fed into the adaptive filter could also be contaminated with parts of the target signal. If this circumstance occurs is not handled properly, it could lead to the undesired removal of parts of the target signal from the output signal $š[n]$.
|
||||
\item The desired signal $s[n]$ is not directly available, as it is only available combined with the corruption noise signal $n[n]$ in the form of $d[n]$ while there is no reference available. Therefore, the error signal $e[n]$, respectively $š[n]$, of the adaptive filter serves as an approximation of the desired signal and is used as an indirect measure of the filter's performance, guiding the adaptation process by its own stepwise minimization.
|
||||
\item The reference noise signal $x[n]$ fed into the adaptive filter could also be contaminated with parts of the desired signal. If this circumstance occurs is not handled properly, it could lead to the undesired removal of parts of the desired signal from the output signal $š[n]$.
|
||||
\end{itemize}
|
||||
The goal of the adaptive filter is therefore to minimize this error signal over time, thereby improving the quality of the output signal by reducing it by its noise-component.\\
|
||||
The minimization of the error signal $e[n]$ can be achieved by applying different error metrics and algorithms used to evaluate the performance of an adaptive filter, including:
|
||||
@@ -167,12 +167,12 @@ Before the Least Mean Squares algorithm can be explained in detail, the Wiener f
|
||||
\caption{Simple implementation of a Wiener filter.}
|
||||
\label{fig:fig_wien}
|
||||
\end{figure}
|
||||
\noindent The Wiener filter, the base of many adaptive filter designs, is a statistical filter used to minimize the Mean Squares Error between a target signal and the output of a linear filter. The output $y[n]$ of the Wiener filter is the sum of the weighted input samples, where the weights are represented by the filter coefficients.
|
||||
\noindent The Wiener filter, the base of many adaptive filter designs, is a statistical filter used to minimize the Mean Squares Error between a desired signal and the output of a linear filter. The output $y[n]$ of the Wiener filter is the sum of the weighted input samples, where the weights are represented by the filter coefficients.
|
||||
\begin{equation}
|
||||
\label{equation_wien}
|
||||
y[n] = w_0x[n] + w_1x[n-1] + ... + w_Mx[n-M] = \sum_{k=0}^{M} w_kx[n-k]
|
||||
\end{equation}
|
||||
The Wiener filter aims to adjust its coefficients to generate a filter output, which resembles the corruption noise signal $n[n]$ contained in the corrupted target signal $d[n]$ as close as possible. After the filter output is subtracted from the corrupted target signal, we receive the error signal $e[n]$, which represents the cleaned signal $š[n]$ after the corruption noise component has been removed. For better understanding, a simple Wiener filter with one coefficient shall be illustrated in the following mathematical approach, before the generalization to an n-dimensional filter is made.
|
||||
The Wiener filter aims to adjust its coefficients to generate a filter output, which resembles the corruption noise signal $n[n]$ contained in the corrupted signal $d[n]$ as close as possible. After the filter output is subtracted from the corrupted signal, we receive the error signal $e[n]$, which represents the cleaned signal $š[n]$ after the corruption noise component has been removed. For better understanding, a simple Wiener filter with one coefficient shall be illustrated in the following mathematical approach, before the generalization to an n-dimensional filter is made.
|
||||
\begin{equation}
|
||||
\label{equation_wien_error}
|
||||
e[n] = d[n] - y[n] = d[n] - wx[n]
|
||||
@@ -184,8 +184,8 @@ If we square the error signal and calculate the expected value, we receive the M
|
||||
\end{equation}
|
||||
The terms contained in Equation \ref{equation_j} can be further be defined as:
|
||||
\begin{itemize}
|
||||
\item $\sigma^2$ = $E(d^2[n])$: The expected value of the squared corrupted target signal - a constant term independent of the filter coefficients $w$.
|
||||
\item \textbf{P} = $E(d[n]x[n])$: The cross-correlation between the corrupted target signal and the reference noise signal - a measure of how similar these two signals are.
|
||||
\item $\sigma^2$ = $E(d^2[n])$: The expected value of the squared corrupted signal - a constant term independent of the filter coefficients $w$.
|
||||
\item \textbf{P} = $E(d[n]x[n])$: The cross-correlation between the corrupted signal and the reference noise signal - a measure of how similar these two signals are.
|
||||
\item \textbf{R} = $E(x^2[n])$: The auto-correlation (or serial-correlation) of the reference noise signal - a measure of the similarity of a signal with it's delayed copy and therefore of the signal's spectral power.
|
||||
\end{itemize}
|
||||
Equation {\ref{equation_j}} can therefore be further simplified and written as:
|
||||
@@ -256,7 +256,7 @@ The result of Equation \ref{equation_j_lms_final} can now be inserted into Equat
|
||||
\label{equation_lms}
|
||||
w[n+1] = w[n] - 2\mu e[n]x[n]
|
||||
\end{equation}
|
||||
The LMS algorithm therefore updates the filter coefficients $w[n]$ after every sample by adding a correction term, which is calculated by the error signal $e[n]$ and the reference noise signal $x[n]$, scaled by the constant step size $\mu$. By iteratively applying the LMS algorithm, the filter coefficients converge towards the optimal values that minimize the mean squared error between the target signal and the filter output. When a predefined acceptable error level is reached, the adaptation process can be stopped to save computing power.\\ \\
|
||||
The LMS algorithm therefore updates the filter coefficients $w[n]$ after every sample by adding a correction term, which is calculated by the error signal $e[n]$ and the reference noise signal $x[n]$, scaled by the constant step size $\mu$. By iteratively applying the LMS algorithm, the filter coefficients converge towards the optimal values that minimize the mean squared error between the desired signal and the filter output. When a predefined acceptable error level is reached, the adaptation process can be stopped to save computing power.\\ \\
|
||||
\subsection{Signal flow diagram of an implanted cochlear implant system}
|
||||
Now equipped with the necessary theoretical background about signal processing, adaptive noise reduction and the LMS algorithm, a realistic signal flow diagram with the relevant transfer functions of an implanted cochlear implant system can be designed, which will serve as the basis for the implementation of ANR on a low-power digital signal processor.
|
||||
\begin{figure}[H]
|
||||
@@ -265,20 +265,20 @@ The LMS algorithm therefore updates the filter coefficients $w[n]$ after every s
|
||||
\caption{Realistic implant design.}
|
||||
\label{fig:fig_anr_implant}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_anr_hybrid} showed us the basic concept of an ANR implementation, without a detailed description how the corrupted target signal $d[n]$ and the reference noise signal $x[n]$ are formed. Figure \ref{fig:fig_anr_implant} now shows a more complete and realistic signal flow diagram of an implanted cochlear implant system, with two signal sensors and an adaptive noise reduction circuit afterwards. The target signal sensor receives the target- and noise signal over their respective transfer functions and outputs the corrupted target signal $d[n]$, which consists out of the recorded target signal $s[n]$ and the recorded corruption noise signal $n[n]$, whereas the noise signal sensor aims to receive (ideally) only the noise signal $v[n]$ over its transfer function and outputs the reference noise signal $x[n]$, which then feeds the adaptive filter.\\ \\
|
||||
Additionally, now the relevant transfer functions of the overall system are illustrated in Figure \ref{fig:fig_anr_implant}. The transfer functions $C_n$, $D_n$, and $E_n$ describe the path from the signal sources to the cochlear implant system. As the sources, the relative location of the user to the sources and the medium bewteen them can vary, these transfer functions are time-variant and unknown. After the signals reached the implant systems, we establish the possibility, that the remaining path of the signals to their respective sensors inside the CI system is fixed and therefore can be seen as time-invariant and known. This knowen transfer functions, which are titled $A$ and $B$, allow us to apply an hybrid static/adaptive filter design for the ANR implementation, as described in chapter 2.5.2.\\ \\
|
||||
\noindent Figure \ref{fig:fig_anr_hybrid} showed us the basic concept of an ANR implementation, without a detailed description how the corrupted signal $d[n]$ and the reference noise signal $x[n]$ are formed. Figure \ref{fig:fig_anr_implant} now shows a more complete and realistic signal flow diagram of an implanted cochlear implant system, with two signal sensors and an adaptive noise reduction circuit afterwards. The primary sensor receives the desired- and noise signal over their respective transfer functions and outputs the corrupted signal $d[n]$, which consists out of the recorded desired signal $s[n]$ and the recorded corruption noise signal $n[n]$, whereas the noise signal sensor aims to receive (ideally) only the noise signal $v[n]$ over its transfer function and outputs the reference noise signal $x[n]$, which then feeds the adaptive filter.\\ \\
|
||||
Additionally, now the relevant transfer functions of the overall system are illustrated in Figure \ref{fig:fig_anr_implant}. The transfer functions $C_n$, $D_n$, and $E_n$ describe the path from the signal sources to the cochlear implant system. As the sources, the relative location of the user to the sources and the medium bewteen them can vary, these transfer functions are time-variant and unknown. After the signals reached the implant systems, we establish the possibility, that the remaining path of the signals is mainly depented on the sensitivity curve of the respective sensors and therefore can be seen as time-invariant and known. This known transfer functions, which are titled $A$ and $B$, allow us to apply an hybrid static/adaptive filter design for the ANR implementation, as described in chapter 2.5.2.\\ \\
|
||||
\begin{equation}
|
||||
\label{equation_dn}
|
||||
d[n] = s[n] + n[n] = t[n] * (C_nA) + v[n] * (D_nA)
|
||||
\end{equation}
|
||||
where $t[n]$ and $v[n]$ are the target- and noise signals at their respective source, $s[n]$ is the recorded target signal and $v[n]$ is the recorded corruption noise after passing the transfer functions.\\ \\
|
||||
The noise reference signal $x[n]$ can be mathematically described as:
|
||||
where $t[n]$ and $v[n]$ are the target- and noise signals at their respective source, $s[n]$ is the recorded desired signal and $n[n]$ is the recorded corruption noise after passing the transfer functions.\\ \\
|
||||
The recorded noise reference signal $x[n]$ can be mathematically described as:
|
||||
\begin{equation}
|
||||
\label{equation_xn}
|
||||
x[n] = v[n] * (E_nB)
|
||||
\end{equation}
|
||||
where $v[n]$ is the noise signal at its source and $x[n]$ is the recorded reference noise signal after passing the transfer functions.\\ \\
|
||||
Another possible signal interaction could be the leakage of the target signal into the noise signal sensor, leading to the partial removal of the target signal from the output signal. This case is not illustrated in Figure \ref{fig:fig_anr_implant} as it won't be further evaluated in this thesis, but shall be mentioned for the sake of completeness.\\ \\
|
||||
where $v[n]$ is the noise signal at its source.\\ \\
|
||||
Another possible signal interaction could be the leakage of the desired signal into the secondary sensor, leading to the partial removal of the desired signal from the output signal. This case is not illustrated in Figure \ref{fig:fig_anr_implant} as it won't be further evaluated in this thesis, but shall be mentioned for the sake of completeness.\\ \\
|
||||
At this point, the theoretical background and the fundamentals of adaptive noise reduction have been adequately introduced and explained as necessary for the understanding of the following chapters of this thesis. The next chapter will now focus on practical high level simulations of different filter concepts and LMS algorithm variations to evaluate their performance in regard of noise reduction quality before the actual implementation on a low-power digital signal processor is conducted.
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
The main purpose of the high-level simulations is to verify and demonstrate the theoretical approach of the previous chapters and to evaluate the performance of the proposed algorithms under various conditions. The following simulations include different scenarios such as, different types of noise signals and different cosniderations of transfer functions. The goal is to verify different approaches before taking the step to the implementation of said algorithms on the low-power DSP.\\ \\
|
||||
The implementation is conducted in Python, which provides a flexible environment for numerical computations and data visualization. The simulation is graphically represented using the Python library Matplotlib, allowing for clear visualization of the results.
|
||||
\subsection{ANR algorithm implementation}
|
||||
The high-level implementation of the ANR algorithm follows the theoretical framework outlined in Subchapter 2.5, specificially Equation \ref{equation_lms}. The algorithm is designed to adaptively filter out noise from a desired signal using a reference noise input. The implementation of the ANR-function includes the following key steps:
|
||||
The high-level implementation of the ANR algorithm follows the theoretical framework outlined in Subchapter 2.5, specificially Equation \ref{equation_lms}. The algorithm is designed to adaptively filter out noise from a desired signal using a reference noise input. The implementation of the ANR function includes the following key steps:
|
||||
\begin{itemize}
|
||||
\item Initialization: Define vectors to store the filter coefficients, the output samples, and the updated filter coefficients over time.
|
||||
\item Filtering Process: After initially enough input samples (= number of filter coeffcients) passed the filter, for each sample in the input sample, the filter coefficients are multiplied with the corresponding reference noise samples before added to an accumulator.
|
||||
@@ -10,17 +10,17 @@ The high-level implementation of the ANR algorithm follows the theoretical frame
|
||||
\item Coefficient Update: The filter coefficients are updated by the corrector, which consists out of the error signal, scaled by the step size. The adaption step parameter allows to control how often the coefficients are updated.
|
||||
\item Iteration: Repeat the process for all samples in the input signal.
|
||||
\end{itemize}
|
||||
The flow diagram in Figure \ref{fig:fig_lms_logic} illustrates the logical flow of the ANR algorithm, while the code snippet in Figure \ref{fig:fig_lms_code} provides the concrete code implementation of the ANR-function.
|
||||
The flow diagram in Figure \ref{fig:fig_anr_logic} illustrates the logical flow of the ANR algorithm, while the code snippet in Figure \ref{fig:fig_anr_code} provides the concrete code implementation of the ANR-function.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.9\linewidth]{Bilder/fig_lms_logic.jpg}
|
||||
\includegraphics[width=0.9\linewidth]{Bilder/fig_anr_logic.jpg}
|
||||
\caption{Flow diagram of the code implementation of the ANR algrotihm.}
|
||||
\label{fig:fig_lms_logic}
|
||||
\label{fig:fig_anr_logic}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{lstlisting}[language=Python]
|
||||
def lms_filter(input, ref_noise, coefficients, mu, adaption_step = 1):
|
||||
def anr_function(input, ref_noise, coefficients, mu, adaption_step = 1):
|
||||
|
||||
coefficient_matrix = np.zeros((len(input), coefficients),
|
||||
dtype=np.float32)
|
||||
@@ -41,19 +41,19 @@ The flow diagram in Figure \ref{fig:fig_lms_logic} illustrates the logical flow
|
||||
|
||||
return output, coefficient_matrix
|
||||
\end{lstlisting}
|
||||
\label{fig:fig_lms_code}
|
||||
\label{fig:fig_anr_code}
|
||||
\caption{High-level implementation of the ANR algorithm in Python}
|
||||
\end{figure}
|
||||
\subsection{Simple ANR usecases}
|
||||
To evaltuate the general functionality and performance of the LMS algorithm from Figure \ref{fig:fig_lms_code} a set of three simple, artificial scenarios are introduced. These examples shall serve as a showcase to demonstrate the general functionality, the possibilities and the limitations of the LMS algorithm. In contrary to a more complex and realistic setup, which will be reviewed afterwards, the clean signals are available, which is in a realistic application not the case.\\ \\
|
||||
In all three scenarios, a chirp signal with a frequency range from 100-1000 Hz is used as the target signal, which is then corrupted with a sine wave (Usecase 1 and 2) or a gaussian white noise (Usecase 3) as noise signal respectively. In this simple setup, the corrpution noise signal is also available as the reference noise signal. Every approach is conducted with 16 filter coefficients and a stepsize of 0.01. The four graphs in the repsective first plot show the target signal, the corrupted target signal, the reference noise signal and the filter output. The two graphs in the respective second plot show the performance of the filter in form of the resulting error signal and the evolution of three filter coefficients over time.\\ \\
|
||||
\noindent This artificial setup could be solved analitically, as the signals do not pass seperate, different transfer functions. This means, that the reference noise signal is the same as the corruption noise signal. This simple setup would not require an adaptive filter approach, but it nevertheless allows to clearly evaluate the performance of the LMS algorithm in different scenarios. Also, due to the fact that the target signal is known, it is possible to graphically evaluate the performance of the algorithm in a simple way.
|
||||
To evaltuate the general functionality and performance of the ANR algorithm from Figure \ref{fig:fig_anr_code} a set of three simple, artificial scenarios are introduced. These examples shall serve as a showcase to demonstrate the general functionality, the possibilities and the limitations of the ANR algorithm. In contrary to a more complex and realistic setup, which will be reviewed afterwards, the clean signals are available, which is in a realistic application not the case.\\ \\
|
||||
In all three scenarios, a chirp signal with a frequency range from 100-1000 Hz is used as the desired signal, which is then corrupted with a sine wave (Usecase 1 and 2) or a gaussian white noise (Usecase 3) as noise signal respectively. In this simple setup, the corrpution noise signal is also available as the reference noise signal. Every approach is conducted with 16 filter coefficients and a stepsize of 0.01. The four graphs in the repsective first plot show the desired signal, the corrupted signal, the reference noise signal and the filter output. The two graphs in the respective second plot show the performance of the filter in form of the resulting error signal and the evolution of three filter coefficients over time.\\ \\
|
||||
\noindent This artificial setup could be solved analitically, as the signals do not pass seperate, different transfer functions. This means, that the reference noise signal is the same as the corruption noise signal. This simple setup would not require an adaptive filter approach, but it nevertheless allows to clearly evaluate the performance of the ANR algorithm in different scenarios. Also, due to the fact that the desired signal is known, it is possible to graphically evaluate the performance of the algorithm in a simple way.
|
||||
\subsubsection{Simple usecase 1: Sine noise at 2000 Hz}
|
||||
In the first usecase, a sine wave with a frequency of 2000 Hz, which lies outside the frequency spectrum of the chirp, is used as noise signal to corrupt the target signal. The shape of the initial target signal is still clearly recognizeable, even if its shape is affected in the higher frequency area. The filter output in Figure \ref{fig:fig_plot_1_sine_1.png} shows a statisfying performance of the LMS algorithm, as the noise is almost completely removed from the target signal after the filter coefficients have adapted.
|
||||
In the first usecase, a sine wave with a frequency of 2000 Hz, which lies outside the frequency spectrum of the chirp, is used as noise signal to corrupt the desired signal. The shape of the initial desired signal is still clearly recognizeable, even if its shape is affected in the higher frequency area. The filter output in Figure \ref{fig:fig_plot_1_sine_1.png} shows a statisfying performance of the ANR algorithm, as the noise is almost completely removed from the corrupted signal after the filter coefficients have adapted.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_sine_1.png}
|
||||
\caption{Corrputed target signal, noise signal and filter output of simple usecase 1}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 1}
|
||||
\label{fig:fig_plot_1_sine_1.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_sine_1.png} confirms this observation, as the signal converges basically to zero after 200 ms. The evolution of the filter coefficients also indicates a quick convergence, meaning that the algorithm has adapted effectively to minimize the error over time.
|
||||
@@ -64,14 +64,14 @@ In the first usecase, a sine wave with a frequency of 2000 Hz, which lies outsid
|
||||
\label{fig:fig_plot_2_sine_1.png}
|
||||
\end{figure}
|
||||
\subsubsection{Simple usecase 2: Sine noise at 500 Hz}
|
||||
The second usecase resembles the first one, but instead of a 2000 Hz sine wave, a sine wave with a frequency of 500 Hz is used as noise signal. This means, that the noise signal now overlaps with the frequency spectrum of the chirp signal, making the noise cancellation task more challenging, as an osciillation beacon in the area of 500 Hz appears. Also, in contrary to usecase 1, the shape of the initial chirp is now far less recognizebale. The filter output in Figure \ref{fig:fig_plot_1_sine_2.png} indicates that the LMS algorithm is still able to significantly reduce the noise from the corrputed target signal,
|
||||
The second usecase resembles the first one, but instead of a 2000 Hz sine wave, a sine wave with a frequency of 500 Hz is used as noise signal. This means, that the noise signal now overlaps with the frequency spectrum of the chirp signal, making the noise cancellation task more challenging, as an osciillation beacon in the area of 500 Hz appears. Also, in contrary to usecase 1, the shape of the initial chirp is now far less recognizebale. The filter output in Figure \ref{fig:fig_plot_1_sine_2.png} indicates that the ANR algorithm is still able to significantly reduce the noise from the corrputed signal,
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_sine_2.png}
|
||||
\caption{Corrputed target signal, noise signal and filter output of simple usecase 2}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 2}
|
||||
\label{fig:fig_plot_1_sine_2.png}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_plot_2_sine_2.png} shows a significant increase of the amplitude of the error signal compared to Usecase 1, especially around the 500 Hz frequency of the noise signal. Also the adaption of the coefficients shows far more variance compared to Usecase 1, with a complete rearrangement in the area of 500 Hz. This indicates that the LMS algorithm is struggling to adapt effectively in a scenario, where the noise signal overlaps with the target signal.
|
||||
\noindent Figure \ref{fig:fig_plot_2_sine_2.png} shows a significant increase of the amplitude of the error signal compared to Usecase 1, especially around the 500 Hz frequency of the noise signal. Also the adaption of the coefficients shows far more variance compared to Usecase 1, with a complete rearrangement in the area of 500 Hz. This indicates that the ANR algorithm is struggling to adapt effectively in a scenario, where the noise signal overlaps with the desired signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_sine_2.png}
|
||||
@@ -79,14 +79,14 @@ The second usecase resembles the first one, but instead of a 2000 Hz sine wave,
|
||||
\label{fig:fig_plot_2_sine_2.png}
|
||||
\end{figure}
|
||||
\subsubsection{Simple usecase 3: Gaussian white noise}
|
||||
The last on of our three simplified usecases involves the use of a gaussian white noise signal as the noise signal to corrupt the target signal. This scenario represents a more complex situation, as white noise contains a broad spectrum of frequencies and is not deterministic, making it more challenging for the ANR algorithm to effectively generate a clean output. Nevertheless, the filter output in Figure \ref{fig:fig_plot_1_noise.png} demonstrates that the ANR algorithm is capable of significantly reducing the noise from the target signal, although the amplitude of the filter output varies, indicating difficulties adapting due to the broad frequency spectrum of the noise.
|
||||
The last on of our three simplified usecases involves the use of a gaussian white noise signal as the noise signal to corrupt the desired signal. This scenario represents a more complex situation, as white noise contains a broad spectrum of frequencies and is not deterministic, making it more challenging for the ANR algorithm to effectively generate a clean output. Nevertheless, the filter output in Figure \ref{fig:fig_plot_1_noise.png} demonstrates that the ANR algorithm is capable of significantly reducing the noise from the desired signal, although the amplitude of the filter output varies, indicating difficulties adapting due to the broad frequency spectrum of the noise.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_noise.png}
|
||||
\caption{Corrputed target signal, noise signal and filter output of simple usecase 3}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of simple usecase 3}
|
||||
\label{fig:fig_plot_1_noise.png}
|
||||
\end{figure}
|
||||
The error signal in Figure \ref{fig:fig_plot_2_noise.png} shows a noticeable variance compared to the previous usecases, especially at the beginning of the signal, where low frequencies dominate. The evolution of the filter coefficients show an interesting pattern, as only the coefficinet in the beginning adapts significantly, while the others remain relatively stable around zero.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_noise.png} shows a noticeable variance compared to the previous usecases, especially at the beginning of the signal, where low frequencies dominate. The evolution of the filter coefficients show an interesting pattern, as only the coefficinet in the beginning adapts significantly, while the others remain relatively stable around zero.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_noise.png}
|
||||
@@ -94,43 +94,43 @@ The error signal in Figure \ref{fig:fig_plot_2_noise.png} shows a noticeable var
|
||||
\label{fig:fig_plot_2_noise.png}
|
||||
\end{figure}
|
||||
\subsection{Intermediate ANR usecase}
|
||||
After the general functionality of the LMS algorithm has been verified with the above simple and artificial usecases, a more complex and intermediate scenario is now introduced. In this usecase, a real-world audio track of a person speaking on TV (see top graph in Figure \ref{fig:fig_plot_1_wav.png}) is used as the clean target signal, which is then corrupted with a dominant breathing noise as the noise signal. This scenario represents a more realistic application of the LMS algorithm, as it involves complex audio signals with varying frequency components and relatively high dynamics, but still keeps the advantage of having the clean signal available for performance evaluation. Also, again, the same noise which corrputs the target signal is used as the reference noise signal, as no transfer functionsare applied on the signals.
|
||||
After the general functionality of the ANR algorithm has been verified with the above simple and artificial usecases, a more complex and intermediate scenario is now introduced. In this usecase, a real-world audio track of a person speaking on TV (see top graph in Figure \ref{fig:fig_plot_1_wav.png}) is used as the desired signal, which is then corrupted with a dominant breathing noise as the noise signal. This scenario represents a more realistic application of the ANR algorithm, as it involves complex audio signals with varying frequency components and relatively high dynamics, but still keeps the advantage of having the clean signal available for performance evaluation. Also, again, the same noise which corrputs the desired signal is used as the reference noise signal, as no transfer functionsare applied on the signals.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_wav.png}
|
||||
\caption{Corrputed target signal, noise signal and filter output of the intermediate ANR usecase}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of the intermediate ANR usecase}
|
||||
\label{fig:fig_plot_1_wav.png}
|
||||
\end{figure}
|
||||
\noindent The filter output in Figure \ref{fig:fig_plot_1_wav.png} indicates already graphically, that the audio track of the person speaking is significantly more intelligible after the application of the ANR algorithm - the prominent breathing noise is clearly reduced in the filter output compared to the corrupted target signal.
|
||||
\noindent The filter output in Figure \ref{fig:fig_plot_1_wav.png} indicates already graphically, that the audio track of the person speaking is significantly more intelligible after the application of the ANR algorithm - the prominent breathing noise is clearly reduced in the filter output compared to the corrupted signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_2_wav.png}
|
||||
\caption{Error signal and filter coefficient evolution of the intermediate ANR usecase}
|
||||
\label{fig:fig_plot_2_wav.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav.png} confirms the function of the algorithm and shows peaks corresponding to the spikes in the breathing noise, indicating the the moments, when the LMS algorithm is setting its coeffcients again to adapt to the changing noise characteristics. It makes sense, that the adaption of the filter coefficients causes repeating spikes in the error signal, as the noise signal now is not static or periodic, but rather dynamic and changing it frequenc and amplitude over time.
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav.png} confirms the function of the algorithm and shows peaks corresponding to the spikes in the breathing noise, indicating the the moments, when the ANR algorithm is setting its coeffcients again to adapt to the changing noise characteristics. It makes sense, that the adaption of the filter coefficients causes repeating spikes in the error signal, as the noise signal now is not static or periodic, but rather dynamic and changing it frequenc and amplitude over time.
|
||||
\subsection{Complex ANR usecase}
|
||||
To close the topic of high-level simulations of the ANR algorithm, a more complex and realistic usecase is finally introduced. In this scenario, the same two audio tracks of the previous usecase are used - but now they pass different transfer functions. Now, an analitical solution is not possible anymore, as the transfer functions affect the signals in different ways, making it impossible to simply subtract the noise signal from the corrupted target signal. This scenario represents a more realistic application of the ANR algorithm, as it involves complex audio signals with varying frequency components and dynamics, as well as different transfer functions affecting the signals.\\ \\
|
||||
Different transfer functions represent the reality of different microphones recording the corrupted target signal and the reference noise signal with a specific frequency response characteristic - this circumstance is especially important, as later a fixed set of filter coefficients shall take care of the predictable part of the signal to reduce the computing power of the DSP.\\
|
||||
Therefore, the audio tracks from the previous example are now convolved with different transfer functions, which mimic the case, that the microphone recording the corrputed target signal, shows another frequency response characteristic as the one recording the reference noise signal. This means, that the reference noise signal is now different to the noise signal corrupting the target signal, making adaptive noise reduction the only feasible approach to reduce the noise from the target signal.
|
||||
To close the topic of high-level simulations of the ANR algorithm, a more complex and realistic usecase is finally introduced. In this scenario, the same two audio tracks of the previous usecase are used - but now they pass different transfer functions. Now, an analitical solution is not possible anymore, as the transfer functions affect the signals in different ways, making it impossible to simply subtract the noise signal from the corrupted signal. This scenario represents a more realistic application of the ANR algorithm, as it involves complex audio signals with varying frequency components and dynamics, as well as different transfer functions affecting the signals.\\ \\
|
||||
Different transfer functions represent the reality of different sensors recording the corrupted signal and the reference noise signal with a specific frequency response characteristic - this circumstance is especially important, as later a fixed set of filter coefficients shall take care of the predictable part of the signal to reduce the computing power of the DSP.\\
|
||||
Therefore, the audio tracks from the previous example are now convolved with different transfer functions, which mimic the case, that the sensor recording the corrputed signal, shows another frequency response characteristic as the one recording the reference noise signal. This means, that the reference noise signal is now different to the noise signal corrupting the desired signal, making adaptive noise reduction the only feasible approach to reduce the noise from the corrputed signal.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_3_wav_complex.png}
|
||||
\caption{Two different microphone sensitivities used for recording the corrupted target signal and the reference noise signal}
|
||||
\caption{Two different sensor sensitivity curves used for recording the corrupted signal and the reference noise signal}
|
||||
\label{fig:fig_plot_3_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent Figure \ref{fig:fig_plot_3_wav_complex.png} illustrates the sensitivity curve of two different microphones used to record the corrupted target signal and the reference noise signal respectively, resulting in two different transfer functions applied to the signals. The effect of transfer functions on the noise signal is shown in Figure \ref{fig:fig_plot_4_wav_complex.png}, where the top graph shows the raw noise signal, while the second and third graph show the effect of the two different transfer functions on the noise signal.
|
||||
\noindent Figure \ref{fig:fig_plot_3_wav_complex.png} illustrates the sensitivity curve of two different microphones used to record the corrupted signal and the reference noise signal respectively, resulting in two different transfer functions applied to the signals. The effect of transfer functions on the noise signal is shown in Figure \ref{fig:fig_plot_4_wav_complex.png}, where the top graph shows the noise signal at it´s source, while the second and third graph show the effect of the two different transfer functions resulting in the corrpuption noise signal and the reference noise signal respectively.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_4_wav_complex.png}
|
||||
\caption{The raw noise signal recorded with two different microphones, showing the effect of different transfer functions on the signal}
|
||||
\caption{The raw noise signal recorded with two different sensors, showing the effect of different transfer functions on the signal}
|
||||
\label{fig:fig_plot_4_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent To evaluate the performance of the ANR algorithm in this complex scenario, the corrupted target signal is recorded with microphone 1 while the reference noise signal is recorded with microphone 2. The filter output in Figure \ref{fig:fig_plot_1_wav_complex.png} indicates, that the ANR algorithm is still capable of significantly reducing the noise from the corrupted target signal, even with only a different reference noise signal available to adapt the filter coefficients.
|
||||
\noindent To evaluate the performance of the ANR algorithm in this complex scenario, the corrupted signal is recorded with the primary sensor while the reference noise signal is recorded with secondary sensor. The filter output in Figure \ref{fig:fig_plot_1_wav_complex.png} indicates, that the ANR algorithm is still capable of significantly reducing the noise from the corrupted signal, even with only a different reference noise signal available to adapt the filter coefficients.
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\linewidth]{Bilder/fig_plot_1_wav_complex.png}
|
||||
\caption{Corrputed target signal, noise signal and filter output of the complex ANR usecase}
|
||||
\caption{Desired signal, corrputed signal, reference noise signal and filter output of the complex ANR usecase}
|
||||
\label{fig:fig_plot_1_wav_complex.png}
|
||||
\end{figure}
|
||||
\noindent The error signal in Figure \ref{fig:fig_plot_2_wav_complex.png} shows only a minor increase in amplitude compared to the previous intermediate usecase, indicating that the ANR algorithm is effectively adapting its filter coefficients.
|
||||
@@ -140,4 +140,4 @@ Therefore, the audio tracks from the previous example are now convolved with dif
|
||||
\caption{Error signal and filter coefficient evolution of the complex ANR usecase}
|
||||
\label{fig:fig_plot_2_wav_complex.png}
|
||||
\end{figure}
|
||||
As now the functionality of the ANR algorithm has been verified in different scenarios, varying from simple to complex, the next chapter of this thesis focuses on the implementation of the algorithm on the low-power DSP.
|
||||
\noindent As now the functionality of the ANR algorithm has been verified in different scenarios, varying from simple to complex, the next chapter of this thesis focuses on the implementation of the algorithm on the low-power DSP.
|
||||
@@ -1,11 +1,11 @@
|
||||
\relax
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware setup and low level simulations}{38}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP}{38}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{39}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{39}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{39}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Hardware setup and low level simulations}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Description of the low-power DSP}{40}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Implementation of the ANR algorithm on the DSP}{41}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}First optimization approach: algorithm implementation}{41}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Second optimization approach: hybrid ANR algorithm}{41}{}\protected@file@percent }
|
||||
\@setckpt{chapter_04}{
|
||||
\setcounter{page}{40}
|
||||
\setcounter{page}{42}
|
||||
\setcounter{equation}{21}
|
||||
\setcounter{enumi}{0}
|
||||
\setcounter{enumii}{0}
|
||||
@@ -140,7 +140,7 @@
|
||||
\setcounter{lstnumber}{21}
|
||||
\setcounter{FancyVerbLine}{0}
|
||||
\setcounter{linenumber}{1}
|
||||
\setcounter{LN@truepage}{39}
|
||||
\setcounter{LN@truepage}{41}
|
||||
\setcounter{FancyVerbWriteLine}{0}
|
||||
\setcounter{FancyVerbBufferLine}{0}
|
||||
\setcounter{FV@TrueTabGroupLevel}{0}
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="28.2.9">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="2253" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-9" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="510" y="410" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="230" width="80" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="430" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="820" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" value="Adaptive<br>Filter" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="435" width="80" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-2" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="520" y="370" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-7" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="132.5" y="240" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-8" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="132.5" y="430" width="125" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-7" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="317.5" y="270.5" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-8" target="8LSkbo7Ni411-_OUStLd-2" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="520" as="sourcePoint" />
|
||||
<mxPoint x="345" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-11" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="8LSkbo7Ni411-_OUStLd-7" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="100" y="270" as="sourcePoint" />
|
||||
<mxPoint x="183" y="269.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-12" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-3" target="8LSkbo7Ni411-_OUStLd-8" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="100" y="460" as="sourcePoint" />
|
||||
<mxPoint x="190" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" value="Target signal<br>sensor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="137.5" y="245" width="110" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" value="Noise signal<br>sensor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="140" y="435" width="110" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" value="<font style="font-size: 20px;">Σ</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="250" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" value="<span style="font-size: 20px;">Target signal</span><div><span style="font-size: 20px;">+<br>Noise signal</span></div>" style="text;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="-40" y="227.5" width="140" height="85" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="270" y="227.5" width="180" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" value="<span style="font-size: 20px;">Noise&nbsp;</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">signal</span>" style="text;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="-35" y="435" width="130" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" value="<span style="font-size: 20px;">x[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="300" y="420" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" value="<span style="font-size: 20px;">y</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="340" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" value="<span style="font-size: 20px;">e[n] = d[n]-y[n] =&nbsp;</span><span style="color: rgb(32, 33, 34); font-family: sans-serif; font-size: 16px; text-align: start; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">Š</span><span style="font-size: 20px;">[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="510" y="227.5" width="210" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-8" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1.025;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-4" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="410" y="560" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="330" y="560" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-9" value="<font style="font-size: 15px;">Error<br>Metric</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="530" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-10" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ngw2JN3qWJ9t0b-mEEB_-9" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="720" y="270" as="sourcePoint" />
|
||||
<mxPoint x="680" y="369" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="720" y="560" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,157 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="28.2.9">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="2253" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-9" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="460" as="sourcePoint" />
|
||||
<mxPoint x="510" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="230" width="80" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="480" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="820" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" value="Adaptive<br>Filter" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="485" width="80" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="8LSkbo7Ni411-_OUStLd-2" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="460" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="360" y="510" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-7" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="132.5" y="240" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-8" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="132.5" y="430" width="125" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-7" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="317.5" y="270.5" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-8" target="ngw2JN3qWJ9t0b-mEEB_-14" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="520" as="sourcePoint" />
|
||||
<mxPoint x="410" y="460" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="360" y="460" />
|
||||
<mxPoint x="360" y="420" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-11" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="8LSkbo7Ni411-_OUStLd-7" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="100" y="270" as="sourcePoint" />
|
||||
<mxPoint x="183" y="269.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-12" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="8LSkbo7Ni411-_OUStLd-8" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="100" y="460" as="sourcePoint" />
|
||||
<mxPoint x="190" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" value="Target signal<br>sensor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="137.5" y="245" width="110" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" value="Noise signal<br>sensor" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="140" y="435" width="110" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" value="<font style="font-size: 20px;">Σ</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="250" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" value="<span style="font-size: 20px;">Target signal</span><div><span style="font-size: 20px;">+<br>Noise signal</span></div>" style="text;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="-20" y="227.5" width="120" height="85" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="270" y="227.5" width="180" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" value="<span style="font-size: 20px;">Noise signal</span>" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="-20" y="440" width="130" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" value="<span style="font-size: 20px;">x[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="280" y="420" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" value="<span style="font-size: 20px;">y</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="580" y="420" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" value="<span style="font-size: 20px;">e[n] = d[n]-y[n] =&nbsp;</span><span style="color: rgb(32, 33, 34); font-family: sans-serif; font-size: 16px; text-align: start; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">Š</span><span style="font-size: 20px;">[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="510" y="227.5" width="210" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-8" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ngw2JN3qWJ9t0b-mEEB_-9" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="310" y="460" as="sourcePoint" />
|
||||
<mxPoint x="410" y="560" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="310" y="610" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-9" value="<font style="font-size: 15px;">Error<br>Metric</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="580" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-10" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="ngw2JN3qWJ9t0b-mEEB_-9" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="720" y="270" as="sourcePoint" />
|
||||
<mxPoint x="680" y="369" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="720" y="610" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-14" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="390" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-15" value="Static<br>Filter" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="440" y="395" width="60" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-17" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=2;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="420" as="sourcePoint" />
|
||||
<mxPoint x="580" y="460" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="580" y="420" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-18" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;" parent="1" source="8LSkbo7Ni411-_OUStLd-2" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="510" as="sourcePoint" />
|
||||
<mxPoint x="580" y="460" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="580" y="510" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-19" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="580" y="460" as="sourcePoint" />
|
||||
<mxPoint x="630" y="410" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="640" y="460" />
|
||||
<mxPoint x="640" y="360" />
|
||||
<mxPoint x="470" y="360" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,67 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="28.2.9">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="1426" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="430" y="230" width="80" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
|
||||
<mxGeometry x="410" y="430" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="670" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" value="<font style="font-size: 16px;">Wiener<br>filter</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" parent="1" vertex="1">
|
||||
<mxGeometry x="435" y="435" width="70" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="8LSkbo7Ni411-_OUStLd-2" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="520" y="370" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" target="8LSkbo7Ni411-_OUStLd-1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="252.5" y="270" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" target="8LSkbo7Ni411-_OUStLd-2" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="257.5" y="460" as="sourcePoint" />
|
||||
<mxPoint x="345" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" value="<font style="font-size: 20px;">Σ</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="250" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" value="<div><span style="font-size: 20px;">Recorded target</span></div><span style="font-size: 20px;">signal</span><div><span style="font-size: 20px;">+<br>Recorded noise</span><div><span style="font-size: 20px;">signal</span></div></div>" style="text;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="80" y="203.75" width="170" height="132.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="270" y="227.5" width="180" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" value="<span style="font-size: 20px;">Recorded reference&nbsp;</span><div><span style="font-size: 20px;">noise signal</span></div>" style="text;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="50" y="430" width="195" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" value="<span style="font-size: 20px;">x[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="300" y="420" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" value="<span style="font-size: 20px;">y</span><span style="color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; font-size: 20px;">[n]</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">&nbsp;=&nbsp;</span><span style="font-size: 20px;">w*x</span><span style="color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; font-size: 20px;">[n]</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="475" y="340" width="130" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" value="<span style="font-size: 20px;">e[n]&nbsp;</span>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
|
||||
<mxGeometry x="560" y="227.5" width="60" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qqt2P6Bfjwj8cCOmPv3F-1" value="<span style="font-size: 20px;">Output</span>" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="680" y="250" width="80" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
115
drawio/fig_anr.drawio
Normal file
@@ -0,0 +1,115 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.2.6">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="2253" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" edge="1" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-9" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="510" y="410" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="430" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="820" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Adaptive<br>Filter" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="430" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-2" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="520" y="370" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-7" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="132.5" y="240" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-8" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="125" x="132.5" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-7" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="317.5" y="270.5" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-8" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="340" y="520" as="sourcePoint" />
|
||||
<mxPoint x="345" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-11" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-7" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="100" y="270" as="sourcePoint" />
|
||||
<mxPoint x="183" y="269.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-12" edge="1" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-3" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-8" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="100" y="460" as="sourcePoint" />
|
||||
<mxPoint x="190" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Primary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="152.5" y="245" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Secondary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="100" x="145" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<font style="font-size: 20px;">Σ</font>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="450" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="font-size: 20px;">Desired signal</span><div><span style="font-size: 20px;">+<br>Noise signal</span></div>" vertex="1">
|
||||
<mxGeometry height="85" width="140" x="-40" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" vertex="1">
|
||||
<mxGeometry height="50" width="180" x="270" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="font-size: 20px;">Noise&nbsp;</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">signal</span>" vertex="1">
|
||||
<mxGeometry height="50" width="130" x="-35" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">x[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="300" y="420" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">y</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="410" y="340" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">e[n] = d[n]-y[n] =&nbsp;</span><span style="color: rgb(32, 33, 34); font-family: sans-serif; font-size: 16px; text-align: start; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">Š</span><span style="font-size: 20px;">[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="210" x="510" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-8" edge="1" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-4" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1.025;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="330" y="560" />
|
||||
</Array>
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="410" y="560" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-9" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=2;" value="<font style="font-size: 15px;">Error<br>Metric</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="530" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-10" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-9" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="720" y="560" />
|
||||
</Array>
|
||||
<mxPoint x="720" y="270" as="sourcePoint" />
|
||||
<mxPoint x="680" y="369" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
157
drawio/fig_anr_hybrid.drawio
Normal file
@@ -0,0 +1,157 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.2.6">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="2253" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-12" edge="1" parent="1" source="ngw2JN3qWJ9t0b-mEEB_-9" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=-0.031;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="390" y="460" as="sourcePoint" />
|
||||
<mxPoint x="510" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="430" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="480" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="820" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Adaptive<br>Filter" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="430" y="485" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="8LSkbo7Ni411-_OUStLd-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="360" y="510" />
|
||||
</Array>
|
||||
<mxPoint x="360" y="460" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-7" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="132.5" y="240" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-8" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="125" x="132.5" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-7" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="317.5" y="270.5" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-8" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-14" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="360" y="460" />
|
||||
<mxPoint x="360" y="420" />
|
||||
</Array>
|
||||
<mxPoint x="340" y="520" as="sourcePoint" />
|
||||
<mxPoint x="410" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-11" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-7" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="100" y="270" as="sourcePoint" />
|
||||
<mxPoint x="183" y="269.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-12" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-8" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="100" y="460" as="sourcePoint" />
|
||||
<mxPoint x="190" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Primary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="152.5" y="245" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Secondary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="100" x="145" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<font style="font-size: 20px;">Σ</font>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="450" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="font-size: 20px;">Desired signal</span><div><span style="font-size: 20px;">+<br>Noise signal</span></div>" vertex="1">
|
||||
<mxGeometry height="85" width="130" x="-30" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" vertex="1">
|
||||
<mxGeometry height="50" width="180" x="270" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">Noise signal</span>" vertex="1">
|
||||
<mxGeometry height="50" width="140" x="-30" y="440" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">x[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="280" y="420" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">y</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="580" y="420" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">e[n] = d[n]-y[n] =&nbsp;</span><span style="color: rgb(32, 33, 34); font-family: sans-serif; font-size: 16px; text-align: start; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);">Š</span><span style="font-size: 20px;">[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="210" x="510" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-8" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-9" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="310" y="610" />
|
||||
</Array>
|
||||
<mxPoint x="310" y="460" as="sourcePoint" />
|
||||
<mxPoint x="410" y="560" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-9" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=2;" value="<font style="font-size: 15px;">Error<br>Metric</font>" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="580" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-10" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="ngw2JN3qWJ9t0b-mEEB_-9" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="720" y="610" />
|
||||
</Array>
|
||||
<mxPoint x="720" y="270" as="sourcePoint" />
|
||||
<mxPoint x="680" y="369" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-14" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="390" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-15" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Static<br>Filter" vertex="1">
|
||||
<mxGeometry height="50" width="60" x="440" y="395" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-17" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="580" y="420" />
|
||||
</Array>
|
||||
<mxPoint x="530" y="420" as="sourcePoint" />
|
||||
<mxPoint x="580" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-18" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-2" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="580" y="510" />
|
||||
</Array>
|
||||
<mxPoint x="570" y="510" as="sourcePoint" />
|
||||
<mxPoint x="580" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-19" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="640" y="460" />
|
||||
<mxPoint x="640" y="360" />
|
||||
<mxPoint x="470" y="360" />
|
||||
</Array>
|
||||
<mxPoint x="580" y="460" as="sourcePoint" />
|
||||
<mxPoint x="630" y="410" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,6 +1,6 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.1.1">
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.2.6">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="1188" dy="619" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<mxGraphModel dx="1426" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@@ -74,23 +74,23 @@
|
||||
<mxPoint x="270" y="460" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Target signal<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="110" x="335" y="245" as="geometry" />
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-13" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Primary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="350" y="245" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Noise signal<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="110" x="327.5" y="435" as="geometry" />
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-14" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="Secondary<br>sensor" vertex="1">
|
||||
<mxGeometry height="50" width="100" x="332.5" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<font style="font-size: 20px;">Σ</font>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="710" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" parent="1" style="text;whiteSpace=wrap;html=1;" value="<div style="text-align: center;"><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Target</span></div><span style="font-size: 20px;"><div style="text-align: center;"><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">signal</span></div></span><div style="text-align: center;"><span style="font-size: 20px;">t[n]</span><span style="font-size: 20px;"></span></div>" vertex="1">
|
||||
<mxGeometry height="85" width="70" x="15" y="210" as="geometry" />
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" parent="1" style="text;whiteSpace=wrap;html=1;" value="<div style="text-align: center;"><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Desired</span></div><span style="font-size: 20px;"><div style="text-align: center;"><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">signal</span></div></span><div style="text-align: center;"><span style="font-size: 20px;">t[n]</span><span style="font-size: 20px;"></span></div>" vertex="1">
|
||||
<mxGeometry height="85" width="75" x="10" y="210" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" vertex="1">
|
||||
<mxGeometry height="50" width="180" x="530" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="font-size: 20px;">Noise</span><div><span style="font-size: 20px;">signal<br></span><div><span style="font-size: 20px;">v[n]</span></div></div>" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="10" y="430" as="geometry" />
|
||||
<mxGeometry height="50" width="90" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">x[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="520" y="420" as="geometry" />
|
||||
67
drawio/fig_wien.drawio
Normal file
@@ -0,0 +1,67 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.2.6">
|
||||
<diagram name="Seite-1" id="BWOSVWQKrhK0Pcg9Olm2">
|
||||
<mxGraphModel dx="1426" dy="743" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-1" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="80" width="80" x="430" y="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" value="" vertex="1">
|
||||
<mxGeometry height="60" width="120" x="410" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-4" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="510" y="269.5" as="sourcePoint" />
|
||||
<mxPoint x="670" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-3" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=15;" value="<font style="font-size: 16px;">Wiener<br>filter</font>" vertex="1">
|
||||
<mxGeometry height="50" width="70" x="435" y="435" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-6" edge="1" parent="1" source="8LSkbo7Ni411-_OUStLd-2" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="520" y="370" as="sourcePoint" />
|
||||
<mxPoint x="780" y="370" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-9" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-1" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="252.5" y="270" as="sourcePoint" />
|
||||
<mxPoint x="392.5" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-10" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="8LSkbo7Ni411-_OUStLd-2" value="">
|
||||
<mxGeometry height="50" relative="1" width="50" as="geometry">
|
||||
<mxPoint x="257.5" y="460" as="sourcePoint" />
|
||||
<mxPoint x="345" y="459.5" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="8LSkbo7Ni411-_OUStLd-16" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<font style="font-size: 20px;">Σ</font>" vertex="1">
|
||||
<mxGeometry height="40" width="40" x="450" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="uwalZ4GZDBHuo1GNIbxM-2" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<div><span style="font-size: 20px;">Recorded desired</span></div><span style="font-size: 20px;">signal</span><div><span style="font-size: 20px;">+<br>Recorded corruption&nbsp;</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 20px;">noise&nbsp;</span><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 20px;">signal</span></div>" vertex="1">
|
||||
<mxGeometry height="132.5" width="210" x="40" y="203.75" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">d[n] = s[n]+n[n]</span>" vertex="1">
|
||||
<mxGeometry height="50" width="180" x="270" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-3" parent="1" style="text;whiteSpace=wrap;html=1;align=center;" value="<span style="font-size: 20px;">Recorded reference&nbsp;</span><div><span style="font-size: 20px;">noise signal</span></div>" vertex="1">
|
||||
<mxGeometry height="50" width="195" x="50" y="430" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-4" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">x[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="300" y="420" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-5" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">y</span><span style="color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; font-size: 20px;">[n]</span><span style="font-size: 20px; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">&nbsp;=&nbsp;</span><span style="font-size: 20px;">w*x</span><span style="color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); background-color: transparent; font-size: 20px;">[n]</span>" vertex="1">
|
||||
<mxGeometry height="40" width="130" x="475" y="340" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ngw2JN3qWJ9t0b-mEEB_-6" parent="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" value="<span style="font-size: 20px;">e[n]&nbsp;</span>" vertex="1">
|
||||
<mxGeometry height="40" width="60" x="560" y="227.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qqt2P6Bfjwj8cCOmPv3F-1" parent="1" style="text;whiteSpace=wrap;html=1;" value="<span style="font-size: 20px;">Output</span>" vertex="1">
|
||||
<mxGeometry height="50" width="80" x="680" y="250" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
5
main.tex
@@ -18,7 +18,7 @@
|
||||
\usepackage{setspace}
|
||||
\usepackage{listings}
|
||||
\usepackage{minted}
|
||||
|
||||
\usepackage{acronym} % Nur verwendete Abkürzungen anzeigen
|
||||
|
||||
\addbibresource{literature.bib}
|
||||
\renewcommand{\thefootnote}{\arabic{footnote}}
|
||||
@@ -64,10 +64,11 @@ by \par
|
||||
\newpage
|
||||
\tableofcontents
|
||||
\newpage
|
||||
\include{acronyms}
|
||||
\newpage
|
||||
\begin{abstract}
|
||||
abstract
|
||||
\end{abstract}
|
||||
|
||||
\include{chapter_01}
|
||||
\include{chapter_02}
|
||||
\include{chapter_03}
|
||||
|
||||