aboutsummaryrefslogtreecommitdiffstats
path: root/buch/papers/reedsolomon/dtf.tex
diff options
context:
space:
mode:
Diffstat (limited to 'buch/papers/reedsolomon/dtf.tex')
-rw-r--r--buch/papers/reedsolomon/dtf.tex157
1 files changed, 112 insertions, 45 deletions
diff --git a/buch/papers/reedsolomon/dtf.tex b/buch/papers/reedsolomon/dtf.tex
index a111527..7c88c16 100644
--- a/buch/papers/reedsolomon/dtf.tex
+++ b/buch/papers/reedsolomon/dtf.tex
@@ -1,55 +1,122 @@
%
-% teil3.tex -- Beispiel-File für Teil 3
+% dtf.tex -- Idee mit DFT
%
-% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
-%
-\section{Diskrete Fourier Transformation
+\section{Übertragung mit Hilfe der diskrten Fourier-Transformation
\label{reedsolomon:section:dtf}}
\rhead{Umwandlung mit DTF}
-Um die Polynominterpolation zu umgehen, gehen wir nun über in die Fourientransformation.
-Dies wird weder eine erklärung der Forientransorfmation noch ein genauer gebrauch
-für den Reed-Solomon-Code. Dieser Abschnitt zeigt nur wie die Fourientransformation auf Fehler reagiert.
-wobei sie dann bei späteren Berchnungen ganz nützlich ist.
+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,
+ 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.
-\subsection{Diskrete Fourientransformation Zusamenhang
-\label{reedsolomon:subsection:dtfzusamenhang}}
-Die Diskrete Fourientransformation ist definiert als
- \[
- \label{ft_discrete}
- \hat{c}_{k}
- = \frac{1}{N} \sum_{n=0}^{N-1}
- {f}_n \cdot e^{-\frac{2\pi j}{N} \cdot kn}
- \]
-, wenn man nun
- \[
- w = e^{-\frac{2\pi j}{N} k}
- \]
-ersetzte, und $N$ konstantbleibt, erhält man
- \[
- \hat{c}_{k}=\frac{1}{N}( {f}_0 w^0 + {f}_1 w^1 + {f}_2 w^2 + \dots + {f}_{N-1} w^N)
- \]
-was überaust ähnlich zu unserem Polynomidee ist.
-\subsection{Übertragungsabfolge
-\label{reedsolomon:subsection:Übertragungsabfolge}}
+\subsection{Beispiel mit Fehlerkorrektur mit Fourier-Transformation
+\label{reedsolomon:subsection:sendbsp}}
-\begin{enumerate}[1)]
-\item Das Signal hat 64 die Daten, Zahlen welche übertragen werden sollen.
-Dabei zusätzlich nach 16 Fehler abgesichert, macht insgesamt 96 Übertragungszahlen.
-\item Nun wurde mittels der schnellen diskreten Fourientransformation diese 96 codiert.
-Das heisst alle information ist in alle Zahlenvorhanden.
-\item Nun kommen drei Fehler dazu an den Übertragungsstellen 7, 21 und 75.
-\item Dieses wird nun Empfangen und mittels inversen diskreten Fourientransormation, wieder rücktransformiert.
-\item Nun sieht man den Fehler im Decodieren in den Übertragungsstellen 64 bis 96.
-\item Nimmt man nun nur diese Stellen 64 bis 96, auch Syndrom genannt, und Transformiert diese.
-\item Bekommt man die Fehlerstellen im Locator wieder, zwar nichtso genau, dennoch erkkent man wo die Fehler stattgefunden haben.
-\end{enumerate}
+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 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{0.9\textwidth}{!}{
- %\includegraphics[width=0.5\textwidth]{papers/reedsolomon/images/plot.pdf}
- \input{papers/reedsolomon/images/plotfft.tex}
+ \resizebox{\textwidth}{!}{
+ \includegraphics[width=\textwidth]{papers/reedsolomon/figures/fourier}
+ %\input{papers/reedsolomon/tikz/plotfftraw.tex}
}
- \caption{Übertragungsabfolge \ref{reedsolomon:subsection:Übertragungsabfolge}}
+ \caption{Übertragungsabfolge \ref{reedsolomon:subsection:sendbsp}}
\label{fig:sendorder}
-\end{figure} \ No newline at end of file
+\end{figure}
+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 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.
+ 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.
+ \par
+ 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.
+ Dazu gehören auch die Nullen an den Fehlerkorrekturstellen 64 - 96.
+ \par
+ 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, 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 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.
+\par
+Damit können die Fehler korrigiert und die Orginaldaten wiederhergestellt werden.
+Der Rekonstruktionsauftrag ist damit erfolgreich ausgeführt.
+
+\subsection{Fourier-Transformation und Polynome\label{reedsolomon:subsection:ftandpolynom}}
+Im Abschnitt \externaldocument{papers/reedsolomon/idee}\ref{reedsolomon:section:polynomansatz}
+wurden Werte eines Polynoms zur Codierung verwendet.
+Die 7 Übertragungspunkte könnten ein Polynom
+\begin{equation}
+ \textcolor{darkgreen}{p(x)}
+ =
+ \textcolor{blue}{a_0} + \textcolor{blue}{a_1}x + \textcolor{blue}{a_2}x^2 +
+ \textcolor{gray}{a_3}x^3 + \textcolor{gray}{a_4}x^4 + \textcolor{gray}{a_5}x^5 +
+ \textcolor{gray}{a_6}x^6
+\label{reedsolomon:equationpoly}
+\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.
+\par
+Die Analogie geht aber noch weiter.
+ Schreibt man
+ \( w =
+ e^{-\frac{2\pi j}{N} k}\)
+ \label{reedsolomon:DFT_summand}, damit wird aus der Formel
+ \begin{equation}
+ \hat{c}_{k}
+ = \frac{1}{N} \sum_{n=0}^{N-1}
+ {f}_n \cdot e^{-\frac{2\pi j}{N} \cdot kn}
+ ,\label{reedsolomon:DFT}
+ \end{equation}
+ 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}.
+ \label{reedsolomon:DFT_polynom}
+ \end{equation}
+ 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}
+ 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 reeleen Zahlen.
+Wenn die Approximation nicht mehr genügend gut ist um die Fehler zu erkennen und rekonstruieren,
+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.
+