diff options
author | JODBaer <JODBaer@github.com> | 2021-08-09 11:21:36 +0200 |
---|---|---|
committer | JODBaer <JODBaer@github.com> | 2021-08-09 11:21:36 +0200 |
commit | 787033c0f57c0890d2c248e95df70281546b3313 (patch) | |
tree | 8043e0e5c41ebcfb5afaccbfbf7304e9159fc7bd /buch | |
parent | Merge commit '5b5e87efc7512bb8597492e6b953f21b65060498' into Baer (diff) | |
download | SeminarMatrizen-787033c0f57c0890d2c248e95df70281546b3313.tar.gz SeminarMatrizen-787033c0f57c0890d2c248e95df70281546b3313.zip |
orthofehler korrigiert
Diffstat (limited to '')
-rw-r--r-- | buch/papers/reedsolomon/dtf.tex | 67 | ||||
-rw-r--r-- | buch/papers/reedsolomon/einleitung.tex | 2 | ||||
-rw-r--r-- | buch/papers/reedsolomon/figures/plotfft.pdf | bin | 59772 -> 59772 bytes | |||
-rw-r--r-- | buch/papers/reedsolomon/idee.tex | 74 |
4 files changed, 71 insertions, 72 deletions
diff --git a/buch/papers/reedsolomon/dtf.tex b/buch/papers/reedsolomon/dtf.tex index 179d90d..559ea1b 100644 --- a/buch/papers/reedsolomon/dtf.tex +++ b/buch/papers/reedsolomon/dtf.tex @@ -4,15 +4,15 @@ \section{Übertragung mit Hilfe der Diskrten Fourier-Transformation \label{reedsolomon:section:dtf}} \rhead{Umwandlung mit DTF} -Die Grundidee eines fehlerkorrigierenden Code ist, dass Informationen eines Datenpunkt, -durch die Codierung, auf viele übertragene Werte verteilt werden. +Die Grundidee eines fehlerkorrigierenden Code ist, dass Informationen eines Datenpunkt +durch die Codierung auf viele übertragene Werte verteilt werden. Die Decodierung ist in der Lage, den ursprünglichen Datenwert zu rekonstruieren, sogar wenn einzelne wenige übertragene Werte beschädigt worden sind. \par Die Fourier-Transformation transformiert einen einzelnen Wert, eine Dirac-Funktion, auf ein Spektrum, welches sich über die ganze Frequenzachse erstreckt. -Aus der Filtertheorie ist bekannt, dass der ursprüngliche Impuls mehr oder weniger rekonstruierbar ist. -Forausgestzt, es gehen nicht zu viele Frequenzen bei der Übertragung verloren. +Aus der Filtertheorie ist bekannt, dass der ursprüngliche Impuls mehr oder weniger rekonstruierbar ist, + vorausgestzt, es gehen nicht zu viele Frequenzen bei der Übertragung verloren. \par Es liegt daher nahe zu versuchen, die Fourier-Transformation für Codierung und Decodierung zu verwenden. @@ -24,15 +24,15 @@ Das folgende Beispiel soll zeigen, wie Fehlerkorrektur möglich ist. Dieses auf eine Art, die der Funktionsweise des Reed-Solomon-Codes, der später erklärt wird, analog ist. \par -Der Auftrag ist nun 64 Daten zu übertragen, 32 Fehler erkennen und 16 Fehler rekonstruieren. -Mit hilfe der Fourier-Transformation werden die \textcolor{blue}{blauen Datenpunkte} transformiert, +Der Auftrag ist nun 64 Datenwerte zu übertragen, 32 Fehler zu erkennen und 16 Fehler zu rekonstruieren. +Mit Hilfe der Fourier-Transformation werden die \textcolor{blue}{blauen Datenpunkte} transformiert, zu den \textcolor{darkgreen}{grünen Übertragungspunkten}. Durch eine Rücktransformation könnnen die \textcolor{blue}{blauen Datenpunkte} wieder rekonstruiert werden. -\begin{figure} +\begin{figure}%[!ht] \centering \resizebox{\textwidth}{!}{ - \includegraphics[width=\textwidth]{papers/reedsolomon/figures/plotfft} + \includegraphics[width=\textwidth]{papers/reedsolomon/figures/fourier} %\input{papers/reedsolomon/tikz/plotfftraw.tex} } \caption{Übertragungsabfolge \ref{reedsolomon:subsection:sendbsp}} @@ -41,34 +41,33 @@ Durch eine Rücktransformation könnnen die \textcolor{blue}{blauen Datenpunkte} In der Abbildung \ref{fig:sendorder} wird eine Übertragung Schritt für Schritt illustriert. In der folgenden Aufzählung werden diese einzelne Schritte erklärt und erläutert: \begin{enumerate}[(1)] - \item Das Signal ist mit 64 zufälligrn, ganzzahligen Datenwerten, zwischen 0 und 10. + \item Das Signal besteht aus 64 zufälligen, ganzzahligen Datenwerten zwischen 0 und 10. Für die Rekonstruktion werden zusäzlich Datenwert benötigt, wir fügen deshalb 32 Werte hinzu. - Diese setzen wir willkürlich auf Null und nennen sie Fehlerkorrekturstellen - \externaldocument{papers/reedsolomon/idee}\ref{reedsolomon:section:Fehlerkorrekturstellen}. - Wir erhalten so einen erweiterten Signalvektor der länge $N =96$. + Diese setzen wir willkürlich auf Null und nennen sie Fehlerkorrekturstellen. + Wir erhalten so einen erweiterten Signalvektor der Länge $N =96$. \item Mit der Fourier-Transformation wird der ganze Signalvektor codiert. Dadurch wird jede Informationseinheit auf alle Punkte des Spektrums verteilt. - \item Wir dürfen annehmen, dass bei der Übertragung, nur einzelne übertragene Werte durch Fehler, - verändert werden. + \item Wir dürfen annehmen, dass bei der Übertragung, nur einzelne übertragene + Werte durch Fehler verändert werden. \par - Im Beispiel sind dies die Werte an den Stellen 7, 21 und 75(\textcolor{red}{rote Kurve}), - die um einen Betrag verändert werden. + Im Beispiel sind dies die Werte an den Stellen 6, 20 und 74 (\textcolor{red}{rote Kurve}), + die um einen Betrag verändert werden. Dieser ist bis zu 150-mal kleiner, als die ursprünglichen codierte Werte. Der Empfänger kennt daher im allgemeinen nicht, ob und wo Übertragungsfehler aufgetreten sind. - \item Ohne Übertragungsfehler kann der Signalvektor durch Inverse Fourier-Transformation vollständig - wiederhergestellt werden. + \item Ohne Übertragungsfehler kann der Signalvektor durch inverse Fourier-Transformation vollständig + wiederhergestellt werden. Dazu gehören auch die Nullen an den Fehlerkorrekturstellen 64 - 96. \par - Sind Übertragungsfehler aufgetreten, werden an diesen Stellen, Werte abweichend von Null, auftreten. + Sind Übertragungsfehler aufgetreten, werden an diesen Stellen Werte abweichend von Null auftreten. Somit haben wir bereits Fehler erkannt. - \item Die Werte an den Fehlerkorrekturstellen 64 - 96, die nicht mehr Null sind, nennenwir das Syndrom. - Im Syndrom steckt nur Information über die Fehler, sie werden durch die Inverse Fourier-Transformation erzeugt. - \item Um die Fehler zu rekonstruieren, ann man versuchen, die Information im Syndrom mit Fourier-Transformation zu transformieren. + \item Die Werte an den Fehlerkorrekturstellen 64 - 96, die nicht mehr Null sind, nennen wir das Syndrom. + Im Syndrom steckt nur Information über die Fehler, sie werden durch die inverse Fourier-Transformation erzeugt. + \item Um die Fehler zu rekonstruieren, kann man versuchen, die Information im Syndrom mit Fourier-Transformation zu transformieren. Da das Syndrom nur ein Teil der Fehlerinformation ist, liefert die Fourier-Transformation eine Approximation der Fehler. - Diese Approximation der Fehler ist genau genug, um die Fehlerstellen zu localisieren. + Diese Approximation der Fehler ist genau genug, um die Fehlerstellen zu lokalisieren. \end{enumerate} Im Beispiel haben wir mit dem Syndrom nur etwa ein Drittel der Fehlerinformation, es ist daher zu erwarten, -dass die Fehlerwerte auch nur ein drittel so gross sind. +dass die Fehlerwerte auch nur ein Drittel so gross sind. \par Damit können die Fehler korrigiert und die Orginaldaten wiederhergestellt werden. Der Rekonstruktionsauftrag ist damit erfolgreich ausgeführt. @@ -87,8 +86,7 @@ Die 7 Übertragungspunkte könnten ein Polynom \end{equation} sechsten Grades bestimmen. Durch die Wahl von $\textcolor{gray}{a_3=0}$, $\textcolor{gray}{a_4=0}$, $\textcolor{gray}{a_5=0}$, $\textcolor{gray}{a_6=0}$ -erzeugen wir die, für die Fehlerkorrektur, -nötige Redundanz, ganz analog zum Schritt (1) im Beispiel. +erzeugen wir die für die Fehlerkorrektur nötige Redundanz, ganz analog zum Schritt (1) im Beispiel. \par Die Analogie geht aber noch weiter. Schreibt man @@ -101,25 +99,24 @@ Die Analogie geht aber noch weiter. {f}_n \cdot e^{-\frac{2\pi j}{N} \cdot kn} ,\label{reedsolomon:DFT} \end{equation} - für die Diskrte-Fourier-Transformation das Polynom + für die diskrete-Fourier-Transformation das Polynom \begin{equation} q(w)= - \frac{{f}_0}{N} + \frac{{f}_1}{N} w^1 + \frac{{f}_2}{N} w^2 + \dots + \frac{{f}_{N-1}}{N} w^{N-1} + \frac{{f}_0}{N} + \frac{{f}_1}{N} w^1 + \frac{{f}_2}{N} w^2 + \dots + \frac{{f}_{N-1}}{N} w^{N-1}. \label{reedsolomon:DFT_polynom} \end{equation} - Im Beispiel werden aber Werte des des Polynoms $q(w)$ für verschieden - \( w = e^{-\frac{2\pi j}{N} k}, k=1, \dots , k=N-1\) übermittelt. + Im Beispiel werden aber Werte des Polynoms \begin{equation} \textcolor{darkgreen}{q(w)}= \frac{\textcolor{blue}{{f}_0}}{N} + \frac{\textcolor{blue}{{f}_1}}{N} w^1 + \frac{\textcolor{blue}{{f}_2}}{N} w^2 + \dots + \frac{\textcolor{blue}{{f}_{63}}}{N} w^{63} + \frac{\textcolor{gray}{{f}_{64}}}{N} w^{64} + \textcolor{gray}{\dots} + \frac{\textcolor{gray}{{f}_{N-1}}}{N} w^{N-1} \label{reedsolomon:DFT_polynom2} \end{equation} -Das syndrom entstand durch die Wahl ${f_{64}}=0$ bis ${f}_{N-1}=0$.(graue koeffizenten) + für verschiedene \( w = e^{-\frac{2\pi j}{N} k}, k=1, \dots ,N-1\) übermittelt. +Das Syndrom entstand durch die Wahl ${f_{64}}=0$ bis ${f}_{N-1}=0$.(graue koeffizenten) \par -Die Polynominterpolation und die Fourier-Transformation rechnen beide mit reelen Zahlen. +Die Polynominterpolation und die Fourier-Transformation rechnen beide mit reeleen Zahlen. Wenn die Approximation nicht mehr genügend gut ist um die Fehler zu erkennen und rekonstruieren, -dann müssen wir von den Reelen-Zahlen weg und zum endlichen Körpern, oder auch Galios-Körper genannt. -Deshalb haben die Mathematiker einen neuen Körper gesucht und ihn in der Endlichkeit gefunden, -dies wird nun im nächsten Abschnitt genauer erklärt. +dann müssen wir von den reeleen Zahlen weg und zum endlichen Körpern, oder auch Galios-Körper genannt. +Dies wird nun im nächsten Abschnitt genauer erklärt. diff --git a/buch/papers/reedsolomon/einleitung.tex b/buch/papers/reedsolomon/einleitung.tex index ca4f398..04f1fe2 100644 --- a/buch/papers/reedsolomon/einleitung.tex +++ b/buch/papers/reedsolomon/einleitung.tex @@ -6,7 +6,7 @@ \section{Einleitung \label{reedsolomon:section:einleitung}} \rhead{Einleitung} -Der Reed-Solomon-Code wurde von den beiden Mathematiker Irving S.Reed und Gustave Solomon, im Jahre 1960, entwickelt. +Der Reed-Solomon-Code wurde von den beiden Mathematiker Irving S. Reed und Gustave Solomon im Jahre 1960 entwickelt. Dabei haben sie das Problem der Fehler bei der Datenübertragung gelöst. In diesem Abschnitt wird möglichst verständlich die mathematische Abfolge, Funktion oder Algorithmus des Reed-Solomon-Code erklärt. diff --git a/buch/papers/reedsolomon/figures/plotfft.pdf b/buch/papers/reedsolomon/figures/plotfft.pdf Binary files differindex b455da5..80adafb 100644 --- a/buch/papers/reedsolomon/figures/plotfft.pdf +++ b/buch/papers/reedsolomon/figures/plotfft.pdf diff --git a/buch/papers/reedsolomon/idee.tex b/buch/papers/reedsolomon/idee.tex index 2142f88..26e617c 100644 --- a/buch/papers/reedsolomon/idee.tex +++ b/buch/papers/reedsolomon/idee.tex @@ -5,18 +5,18 @@ \label{reedsolomon:section:idee}} \rhead{Problemstellung} Um Fehler in einer Datenübertragung zu erkennen, könnte man die Daten jeweils doppelt senden, - also immer zwei gleich Werte miteinander und so jeweilige einzelne Fehler erkennen. -Wenn jedoch mehr als nur ein Fehler erkennt werden soll und sogar noch das orginal rekonstruiert werden soll, + also immer zwei gleich Werte miteinander und so jeweils einzelne Fehler erkennen. +Wenn jedoch mehr als nur ein Fehler erkannt werden soll und sogar noch das Orginal rekonstruiert werden soll, dann werden die Daten drei oder vierfach versendet. Doch nur schon um Fehler zu erkennen werden überproportional viele Daten doppelt und dreifach gesendet. Das Problem liegt darin Informationen, Zahlen, zu Übertragen und Fehler zu erkennen und zu korrigieren. -Der Unterschied des Fehler erkennen und korrigiren, ist das beim Erkennen nur die Frage beantwortet wird: Ist die Übertragung fehlerhaft oder nicht? -Beim Korrigieren werden Fehler erkannt und dann zusätzlich noch den original Wert rekonstruieren. -Eine weitere Möglichkeit wäre, dass der Empfänger nach einer fehlerhaften Übertragung die selben Daten nochmals auffordert. -Dies führt wieder zu unerwünschten mehrfach Übertragung. -In Anwendungen des Reed-Soöomon-Code \externaldocument{papers/reedsolomon/anwendungen} \ref{reedsolomon:section:anwendung} -ist dies vom Empfänger gesteuerte erneute Übertragen meistens nicht sinnvoll oder sogar unmöglich. +Der Unterschied des Fehler Erkennens und Korrigirens, ist das beim Erkennen nur die Frage beantwortet wird: Ist die Übertragung fehlerhaft oder nicht? +Beim Korrigieren werden Fehler erkannt und dann zusätzlich noch die Originalwerte rekonstruiert. +Eine weitere Möglichkeit wäre, dass der Empfänger nach einer fehlerhaften Übertragung die selben Daten nochmals anfordert. +Dies führt wieder zu unerwünschten mehrfachen Übertragung. +In Anwendungen des Reed-Solomon-Codes Abschnitt \externaldocument{papers/reedsolomon/anwendungen} \ref{reedsolomon:section:anwendung} + ist diese vom Empfänger gesteuerte erneute Übertragen meistens nicht sinnvoll oder sogar unmöglich. Der Reed-Solomon-Code macht dies Übertragung auf eine andere, clevere Weise. \subsection{Polynom-Ansatz @@ -34,35 +34,35 @@ p(x) \end{equation}. \par Ein Polynome zweiten Grades ist durch drei Punkte eindeutig bestimmbar. -Bei einer fehlerlosen Übertragung, können wir mit 3 übertragene Werte, +Bei einer fehlerlosen Übertragung können wir mit 3 übertragene Werte das Polynom durch Polynominterpolation volständig rekonstruieren. -Weder erkläre noch erläutere ich die Polynominterpolation, - wir brauchen sie als Funktion, die von Punktn ein Polynom errechnet. -Die koeffizente, des rekonstruierten Polynoms, sind dann unsere gesendten Zahlen \textcolor{blue}{2}, \textcolor{blue}{1}, \textcolor{blue}{5}. +Wir brauchen Polynominterpolation als Methode, um aus Punkte wieder Polynom zu berechnen. +Die Koeffizente des rekonstruierten Polynoms sind dann unsere gesendeten Zahlen \textcolor{blue}{2}, \textcolor{blue}{1}, \textcolor{blue}{5}. +\par Wie können wir nun Fehler erkennen oder sogar korrigieren? -Versuchen wir doch mehr Werte zu Übertragen, wir nehmen im Beispiel 7 Werte. +Versuchen wir doch mehr Werte zu übertragen, wir nehmen im Beispiel 7 Werte. Übertragen werden nun die \textcolor{darkgreen}{grünen Werte} - dieses 7 Werte \textcolor{blue}{blauen Polynomes} an den Stellen 1, 2, 3\dots 7 . + dieses \textcolor{blue}{blauen Polynomes} an den Stellen 1, 2, 3, \dots , 7. In Abbildung \ref{fig:polynom} ist das zu den \textcolor{blue}{Datenpunkten} gehörige Polynom blau dargestellt, -die \textcolor{darkgreen}{übertragene Werte} des Polynoms sind grün. + die \textcolor{darkgreen}{übertragenen Werte} des Polynoms sind grün. Die grünen Punkte bestimmen die Parabel. -Damit können die Fehler erkannt werden, weil die empfangenen Punktenicht auf der Parabel liegen. -Somit könnendie grauen Punkte auf der Parabel ersetzt werden und sind damit korrigiert. -bis zu wivielen Fehler können wir nun korrigieren im Beispiel korrigieren? +Damit können die Fehler erkannt werden, weil die empfangenen Punkte nicht auf der Parabel liegen. +Somit können die grauen Punkte auf der Parabel ersetzt werden und sind damit korrigiert. +Bis zu wievielen Fehler können wir nun im Beispiel korrigieren? Wir erhöhen nun die Fehleranzahl Schritt für Schritt: \begin{itemize} - \item Bei \textit{1 Fehler} können konkurenzierende Polynome, zusammen mit zwei originalen Punkten fehlleiten. - Dabei kann aber maximal 3 Punkte auf diesem Konkurrenzpolynom sein. - Da 6 übereinstimende grössser als 3 ist haben wir unser original Polynom gefunden. - \item Bei \textit{2 Fehler} kann ein Fehler mit zwei originalen Punkten ein fehlleitendes Konkurrenzpolynom bilden. + \item Bei \textit{1 Fehler} können konkurrenzierende Polynome, zusammen mit zwei originalen Punkten entstehen. + Dabei können aber maximal 3 Punkte auf diesem Konkurrenzpolynom sein. + Da 6 > 3 ist haben wir unser original Polynom gefunden. + \item Bei \textit{2 Fehlern} kann ein Fehler mit zwei originalen Punkten ein Konkurrenzpolynom bilden. Da der zweite Fehler frei wählbar ist, kann dieser auch auf dem Konkurrenzpolynom liegen, wie in der Abbilbung \ref{fig:polynom}. - Nun haben wir, ein originles Polynom mit 5 übereinstimmenden und eine konkurrenzierendes mit 4 Punkten. - Da 5 noch grösser als 4 ist, können wir sagen, welches das original Polynom ist. - \item Bei \textit{3 Fehler} kann genau wie bei 2 Fehler, ein Fehler ein fehlleitendes Polynom mit 2 original Punkten bestimmen werden. + Nun haben wir, ein originales Polynom mit 5 übereinstimmenden und eine konkurrenzierendes mit 4 Punkten. + Da 5 noch grösser als 4 ist, können wir sagen, welches das Originalpolynom ist. + \item Bei \textit{3 Fehlern} kann genau wie bei 2 oder 1 Fehler, ein konkurenzierendes Polynom mit einem Fehler und zwei originalen Punkten bestimmen werden. Auch hier sind die anderen Fehler frei wählbar und liegen auf dem Konkurrenzpolynom. - Nun ist es so das 5 Punkte auf diesem konkurenzierenden Polynom und 4 Punkte auf dem Originalen. - Das Original Polynom kann nicht mehr gefunden werden. - \item Bei \textit{4 Fehler} Es kann noch erkennt weden das Fehler statt gefunden haben, da 3 orginale Punkte das ursprüngliche Polynom ergeben. + Nun ist es so das 5 Punkte auf diesem konkurenzierenden Polynom und 4 Punkte auf dem originalen. + Das Originalpolynom kann nicht mehr gefunden werden. + \item Bei \textit{4 Fehlern} Es kann noch erkannt werden, dass Fehler statt gefunden haben, da 3 orginale Punkte das ursprüngliche Polynom ergeben. Somit haben wir mindestens 2 verschieden Polynome, dass bedeutet Fehler sind entstanden. \item Bei \textit{5 Fehler} Mit den 2 originalen Punkte kann das Originale Polynom nicht mehr erkannt werden und somit auch keine Aussgae gemacht werden ob Fehler statt gefunden haben oder nicht. @@ -75,17 +75,18 @@ Wir erhöhen nun die Fehleranzahl Schritt für Schritt: \caption{Polynom $p(x)$ von der Gleichung\eqref{reedsolomon:equation1}} \label{fig:polynom} \end{figure} +\qedhere \end{beispiel} \section{Anzahl Übertragungswerte bestimmen \label{reedsolomon:section:Fehlerkorrekturstellen}} Um zu bestimmen, wieviel zusätzliche \textcolor{darkgreen}{Übertragungspunkte} notwendig sind, um die Fehler zu korrigieren, muss man zuerst wissen, wieviel \textcolor{blue}{Datenwerte} gesendet und wieviel \textcolor{red}{Fehler} erkennt werden sollen. -Die Anzahl \textcolor{blue}{Datenwerte}, ergeben die anzahl Polynomkoeffizente $k$ und somit den Grad $k-1$. -Die Bestimmung der Anzahl der Fehler $t$, welche korrigiert werden können, brauchen redundanz. +Die Anzahl \textcolor{blue}{Datenwerte}, ergeben die Anzahl Polynomkoeffizente $k$ und somit den Grad $k-1$. +Die Bestimmung der Anzahl der Fehler $t$, welche korrigiert werden können, braucht Redundanz. Gehen wir die Fehleranzahl mit verschiedenen Übertragungsanzahlen durch, erkennt man almählich ein Muster. -\begin{table} +\begin{table}%[!ht] \centering \begin{tabular}{ c c | c} \hline @@ -101,17 +102,18 @@ Gehen wir die Fehleranzahl mit verschiedenen Übertragungsanzahlen durch, \caption{ Fehlerkorrekturstellen Bestimmung.} \label{tab:fehlerkorrekturstellen} \end{table} -Es müssen mehr Punkte auf dem \textcolor{blue}{originalen Polynom} liegen, als auf dem Konkurenzierenden. -Somit braucht man für die Übertragung pro Fehler 2 übertragungspunkte mehr. +Es müssen mehr Punkte auf dem \textcolor{blue}{originalen Polynom} liegen, als auf dem konkurenzierenden. +Somit braucht man für die Übertragung pro Fehler zwei Übertragungspunkte mehr. Wie in der Tabelle ergibt sich diese Übertragungsanzahl \begin{equation} \textcolor{darkgreen}{u}= - \textcolor{blue}{k}+2\textcolor{red}{t} + \textcolor{blue}{k}+2\textcolor{red}{t}. \label{reedsolomon:equation2} -\end{equation}. +\end{equation} Ein Nebeneffekt ist, dass auch $2t$ Fehler erkannt werden können, nicht aber korrigiert. -Nun haben wir für jede rekonstruktion des Polynoms, die Polynominterpolation gebraucht. +Für die Polynomkoeffizente nach der Übertragung zu rekonstruieren, + haben wir jedes mal die Polynominterpolationmethode angewendet. Diese Polynoiminterpolation ist leider schwierig und fehleranfällig. Deshalb finden wir eine alternative im nächsten Abschnitt. |